Java项目会被打成jar的方式部署在Linux服务器上执行,为了避免重复执行Linux命令,现将启动命令存放于sh可执行文件中
start.sh
#!/bin/sh
# 获取当前目录
APPDIR=`pwd`
# 获取时间最新jar包
LAST_JAR=`ls -t |grep server_test.*.jar |head -n 1`
# 生成pid文件位置,用于结束运行使用
PIDFILE=$APPDIR/server_test.pid
# 如进程中已有pid,则退出命令
if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then
echo "system is already running..."
exit 1
fi
# 不输出控制台信息,应用在生产环境中
nohup java -Dloader.path=/data/**/cloud_lib -jar $LAST_JAR --spring.profiles.active=test >/dev/null 2>&1 &
# 输出pid到pid文件
echo $! > $PIDFILE
echo "start $LAST_JAR success..."
改启动文件需要自行更改的地方
1.server_test 需要改成项目jar包的名称,版本号无需添加 如:
2.在当前项目启动目录时生成pig文件该文件内存放的是Java执行起来的进程Id,用于结束运行时使用
3.-Dloader.path,jar包运行需要用到的maven包,自行创建目录进行上传即可
4.spring.profiles.active=test。程序运行时执行的配置文件,可以根据不同环境的服务器进行随意更改。
正式如:spring.profiles.active=prod
执行命令:在Linux服务器命令行下执行 sh start.sh 生成pid文件,log文件即为执行成功。
stop.sh
#!/bin/sh
# 当前目录
APPDIR=`pwd`
# pid文件位置
PIDFILE=$APPDIR/server_test.pid
# 如进程中没有pid则不处理,如有pid则杀进程,删除pid文件
if [ ! -f "$PIDFILE" ] || ! kill -0 "$(cat "$PIDFILE")"; then
echo "systemnot running..."
else
echo "stopping system..."
PID="$(cat "$PIDFILE")"
kill -9 $PID
rm "$PIDFILE"
echo "...system stopped"
fi
1.需要修改pid文件名称
2.根据pid文件内的进程号去Kill进程
执行命令:在Linux服务器命令行下执行 sh stop.sh pid文件消失,即为进程kill成功。
ps:该工具配置好后可为日常部署减轻命令操作!