一行命令实现Java项目启动停止和重启方式
作者:Zhang.jialei
文章介绍了一个支持启动、停止和重启项目的功能,默认不入参,同时允许用户自定义Java路径和JVM参数,并可通过脚本进行操作
功能
- 默认不入参是启动项目
- 支持项目启动、停止、重启:start | stop | restart
- 支持自定义java路径和jvm参数
使用
[root@master Desktop]# ./bin/demo-sh_start.sh start 程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar 日志名称: demo-app-sh-1.2.1-SNAPSHOT Java配置: -Xmx1024M -Xms256M 程序未运行 开始启动程序 [root@master Desktop]# ./bin/demo-sh_start.sh stop 程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar 日志名称: demo-app-sh-1.2.1-SNAPSHOT Java配置: -Xmx1024M -Xms256M 程序已运行,PID:[ 10864 ] 停止程序 [root@master Desktop]# ./bin/demo-sh_start.sh restart 程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar 日志名称: demo-app-sh-1.2.1-SNAPSHOT Java配置: -Xmx1024M -Xms256M 程序未运行 重启程序 0
脚本
#!/bin/sh
# 服务和java配置
appName=%s # 这里替换jar路径, 如:./demo-app.jar, 建议使用绝对路径
JAVA_HOME=java
JAVA_OPT="-Xmx1024M -Xms256M"
# 日志
logName=$(basename ${appName} .jar)
# 输出程序信息
echo "程序名称:" ${appName}
echo "日志名称:" ${logName}
echo "Java配置:" ${JAVA_OPT}
# 判断是否已经启动
v_pid=$(ps -ef | grep ${logName} | grep -v grep | awk '{print $2}')
if [ -z $v_pid ]; then
echo "程序未运行"
else
echo "程序已运行,PID:[" ${v_pid} "]"
fi
if [ $# = 0 ]; then
# 默认直接启动程序
if [ -z $v_pid ]; then
echo "开始启动程序"
else
echo "终止本次启动"
exit 1
fi
# 运行java
nohup ${JAVA_HOME} -jar ${JAVA_OPT} ${appName} >>${logName}.log 2>&1 &
else
# 停止
if [ $1 = "stop" ]; then
s_killRes=$(kill ${v_pid})
echo "停止程序" ${s_killRes}
exit 0
# 重启
elif [ $1 = "restart" ]; then
# 重启
if [ -z $v_pid ]; then
s_killRes="0"
else
s_killRes=$(kill ${v_pid})
fi
echo "重启程序" ${s_killRes}
# 运行
elif [ $1 = "start" ]; then
if [ -z $v_pid ]; then
echo "开始启动程序"
else
echo "终止本次启动"
exit 1
fi
else
echo "未知的指令, 请输入 [start | stop | restart]"
exit 1
fi
# 启动
nohup ${JAVA_HOME} -jar ${JAVA_OPT} ${appName} >>${logName}.log 2>&1 &
fi
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
