sh脚本启动java程序

本人对于shell脚本,纯属新手,全靠百度写出这个脚本,如果有不对的地方,欢迎指正

#!/bin/bash
# 当前目录  如果是当前目录,可以不填
HOME_DIR=
# jar名   如果当前目录只有一个jar,可以不填
APP_NAME=
# 启动环境  
ACTIVE=
# 启动端口
PORT=
# 远程调试端口
DEBUG_PORT=
# 远程调试命令
DEBUG_SH="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$DEBUG_PORT"
# 最大堆内存
XMX=
# 初始化堆内存
XMS=
# 其他jvm参数
JVM_PARAMS=
# 输出文件
OUT_FILE=
# 启动脚本
START_SH=

# 生成启动脚本
gen_start_sh() {
	# 判断当前目录
	if [ "$HOME_DIR" = "" ];then
		HOME_DIR=$(cd $(dirname $0); pwd)
	fi
	
	# 判断jar名
	if [ "$APP_NAME" = "" ];then
		APP_NAME=$(ls *.jar)
	fi
	
	# 生成启动命令
	START_SH="nohup java -jar $HOME_DIR/$APP_NAME"
	
	# 添加最大内存
	if [ "$XMX" != "" ];then
		START_SH="$START_SH"" -Xmx=$(XMX)"
	fi
	
	# 添加初始化堆内存
	if [ "$XMS" != "" ];then
		START_SH="$START_SH"" -Xms=$(XMS)"
	fi
	
	# 判断是否调试
	if [ "$DEBUG_PORT" != "" ];then
		START_SH="$START_SH"" $DEBUG_SH"
	fi
	
	# 添加其他jvm参数
	if [ "$JVM_PARAMS" != "" ];then
		START_SH="$START_SH"" $JVM_PARAMS"
	fi
	
	# 添加目录
	START_SH="$START_SH"" $HOME_DIR/$APP_NAME"
	
	# 判断启动环境
	if [ "$ACTIVE" != "" ];then
		START_SH="$START_SH"" --spring.profiles.active=$ACTIVE"
	fi
	
	# 判断启动端口
	if [ "$PORT" != "" ];then
		START_SH="$START_SH"" --server.port=$PORT"
	fi
	
	# 输出文件
	if [ "$OUT_FILE" != "" ];then
		START_SH="$START_SH"" >> $OUT_FILE 2>&1 &"
	else
		OUT_FILE=out.out
		START_SH="$START_SH"" >> out.out 2>&1 &"
	fi
}

# 检查程序是否存活   1: 存在  0: 不存在
is_run() {
	gen_start_sh
	pid=$(ps -aux | grep -v grep | grep $HOME_DIR/$APP_NAME | awk '{print $2}')
	if [ "$pid" = "" ];then
		return 0
	else
		return 1
	fi
}

# 启动程序
start() {
	# 生成启动脚本
	gen_start_sh
	# 判断程序是否在运行
	is_run
	if [ "$?" = "1" ];then
		echo "进程已经存在,请勿多次启动"
		exit 1
	fi
	# 启动程序
	eval $START_SH
	sleep 2
	is_run
	if [ "$?" = "1" ];then
		echo "进程已启动,请观察输出文件$OUT_FILE"
		tail -f $OUT_FILE
	else
		echo "进程启动失败,请检查"
	fi
}

# 停止程序
stop() {
	# 生成启动脚本
	gen_start_sh
	# 判断程序是否在运行
	is_run
	if [ "$?" = "0" ];then
		echo "程序未运行"
		return 1
	fi
	# 获取进程pid
	pid=$(ps -aux | grep -v grep | grep $HOME_DIR/$APP_NAME | awk '{print $2}')
	# 杀死程序
	eval kill -9 $pid
	sleep 1
	is_run
	if [ "$?" = "0" ];then
		echo "程序已停止"
	else
		echo "进程停止失败,请检查"
	fi
}

if [ $# -eq 1 ] && [ $1 == "stop" ]; then
        stop
elif [ $# -eq 1 ] && [ $1 == "start" ]; then
        start
elif [ $# -eq 1 ] && [ $1 == "restart" ]; then
        restart
else
        echo "当前脚本只支持stop, start, restart命令"
fi
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值