首页 > 系统相关 >Linux 中使用脚本启动 Java 服务

Linux 中使用脚本启动 Java 服务

时间:2022-11-08 20:01:43浏览次数:72  
标签:脚本 Java name JAR app pid echo FILE Linux

Linux 中使用脚本启动 Java 服务

#!/bin/sh

# 服务启动参数
#JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:ParallelGCThreads=4 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"
JAVA_OPTS="-Xmx2g -Xms2g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./"
# 服务输出的控制台日志的文件名
LOG_FILE="console.log"
# 所有类型服务的端口号
ALL_PORT=('8081' '5423' '5699' '5424' '8888' '5443' '6060' '6061')
# 目标 Java 服务端口号
JAR_PORT=""
# 指令事件
EXECUTE_EVENT=""

# 检查程序是否处于运行状态
is_exist() {
	pid=`ps -aux|grep ${JAR_NAME}|grep -v grep|grep -v vi|grep -v dbx|grep -v tail|grep -v start|grep -v stop|sed -n 1p|awk '{print $2}'`
	
	if [ -z "${pid}" ]; then
		return 0
	else
		echo "pid is ${pid[i]}";
		return 1
	fi
}

# 服务运行状态查看方法
status() {
  is_exist
  if [ $? -eq "1" ]; then
    echo "serivce is running,pid is ${pid}"
  else
    echo "serivce is not running!"
  fi
}

# 服务停止方法
stop() {
	pid=`netstat -anp|grep ${JAR_PORT}|awk '{printf $7}'|cut -d/ -f1`
	if [ -z "${pid}" ]; then
		echo "service is not running!"
	else
		echo "pid is ${pid[i]}";
		echo "pid = $pid begin kill -9 $pid"
		kill -9 $pid
		sleep 2
		echo "service process stopped!" 
	fi
}

# 服务启动方法
start() {
	is_exist
	if [ $? -eq "1" ]; then
		echo "service is already running. pid is ${pid}"
	else
		echo "JAR_NAME: $JAR_NAME"
		echo "JAVA_OPTS: $JAVA_OPTS"
		echo "LOG_FILE: $LOG_FILE"
		echo "spring.profiles.active: $env"

		if [ -z "${JAR_NAME}" ]; then
			echo "JAR_NAME is blank"
		else
			nohup java -jar $JAR_NAME --spring.profiles.active=$env $JAVA_OPTS>/home/$SERVICE_TYPE/$ENV_FILE/$LOG_FILE 2>&1 &
			tail -800f /home/$SERVICE_TYPE/$ENV_FILE/$LOG_FILE
		fi
	fi
}

while getopts ":d:k:e:" optname
do
	case "$optname" in
		"d")
			JAR_NAME=$OPTARG;
			
			jar_name_array=(${JAR_NAME//// })
			app_name=${jar_name_array[${#jar_name_array[@]}-1]}
			echo "app_name is $app_name"
			app_name_array=(${app_name//_/ })
			app=${app_name_array[0]}
			echo "app is $app"
			case "$app" in
				"PC")
					SERVICE_TYPE="admin"
					;;
				"PDA")
					SERVICE_TYPE="pda"
					;;
				*)
					echo "app name is illegal characters"
					exit 0
			esac
			
			EXECUTE_EVENT="start"
			;;
		"k")
			if [ "$OPTARG" != null ];then
				if [[ "${ALL_PORT[@]}"  =~ "${OPTARG}" ]]; then
					JAR_PORT=$OPTARG
				else
					echo "port $OPTARG is illegal characters"
					exit 0
				fi
			else
				echo "-k need a port param"
				exit 0
			fi
			
			EXECUTE_EVENT="stop"
			;;
		"e")
			env=$OPTARG;
			case "$env" in
				"dev")
					ENV_FILE="dev";
					;;
				"test")
					ENV_FILE="test";
					;;
				"prod-gz")
					ENV_FILE="prod-gz";
					;;
				"prod-fs")
					ENV_FILE="prod-fs";
					;;
				"prod-rd")
					ENV_FILE="prod-rd";
					;;
				*)
					echo "env is illegal characters"
					exit 0
			esac
			;;
	esac
done

case "$EXECUTE_EVENT" in
	"start")
		if [ -z "${env}" ]; then
			echo "env is blank"
		else
			echo "About to start..."
			start
		fi
		;;
	"stop")
		echo "About to stop..."
		stop
		;;
esac

exit 0

更多:https://cloud.tencent.com/developer/article/1780384

标签:脚本,Java,name,JAR,app,pid,echo,FILE,Linux
From: https://www.cnblogs.com/duolaa/p/16870974.html

相关文章

  • Java中的异常和处理
    Java中的异常和处理详解简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用......
  • Java标识符
    Java标识符关键字标识符注意点标识符由字母、数字、下划线“_”、汉字、美元符号“$”组成,第一个字符不能是数字。不能把Java关键字和保留字作为标识符。标......
  • java api
    api是应用程序编程接口,感觉像c的库,不过又有详细的说明中文在线文档:www.matools.comapi里的组织形式:包下有类接口异常,类下面有字段,构造方法,成员方法如何查找对......
  • Java的三种代码注释
    Java的三种代码注释单行注释://文字多行注释:/*文字*/JavaDoc(文档注释):/***/如:/****/......
  • dotnet Core 在linux 下设置成Service
    1、新建.service文件cd/etc/systemd/system//进入改目录touchCore.service//新建Core服务文件viCore.service//编辑2、插入下面代码注意自己的服务名,以及项......
  • RabbitMQ [java.lang.String] to [java.nio.channels.Channel]解决办法
    记录一下入门RabbitMQ问题问题如下2019-08-2816:51:26.495[SimpleAsyncTaskExecutor-1]WARNo.s.a.r.l.ConditionalRejectingErrorHandler-ExecutionofRabbitmessa......
  • 20221107 24. Linux 核心编译与管理
    24.1编译前的任务:认识核心与取得核心源代码“核心(kernel)”是整个操作系统的最底层,他负责了整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM......
  • 20220802 鸟哥 Linux 私房菜【归档】
    参考资料鸟哥Linux私房菜-基础学习篇(第四版)鳥哥私房菜-基礎學習篇目錄-forCentOS7环境信息CentOS7.x书中使用版本:7.1练习使用版本:7.9目录00.计算......
  • 20220803 01. Linux是什么与如何学习
    1.1Linux是什么Linux就是一组软件1.1.1Linux是什么?操作系统/应用程序?Linux就是一套操作系统Linux就是核心与系统调用接口那两层早期的Linux是针对386来开发的Tor......
  • 【Linux相关】安全漏洞处理
    一、前言近期甲方使用漏洞软件扫描网络环境下所有主机,扫描出一大堆安全漏洞,最好的处理方式当然是升级系统相关组件至最新的软件版本。然而,整个软件系统引用了部分第三方......