Spring Boot项目jar包部署及脚本启停(自动获取PID)

Spring Boot项目打成jar包部署时,一般会配合脚本来方便管理服务的启动与关闭,本文总结了在实践过程中用到的脚本,具体内容如下所示:

1、创建服务启动脚本xxx-startup.sh,其内容如下所示

#!/bin/bash
echo "服务启动"
# 后台运行jar包任务
nohup java -Xms1024m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -jar xxx.jar --server.port=8080 > xxx.out 2>&1 &
# 将启动的进程PID写入到指定的文件中,以便后续关闭服务时使用
echo $! > xxx.pid

脚本解释:
正常情况下我们使用java命令运行jar包的时候,命令行终端会被进程锁定,这个时候如果关闭窗口或者解锁锁定,就会导致程序也跟着结束。因此,上述脚本中使用了nohup命令 + & 来使得当前终端任务运行于后台,保证在关闭终端或者窗口时程序不会退出。

此外,默认情况下 nohup命令 + & 后台任务会将原本在前台控制台输出的内容输出到 nohup.out 文件中,我们使用 > 将标准输出和标准错误结果输出到指定的文件中,上述脚本中 2>&1 意思是将标准错误(2)重定向到标准输出中(1),而标准输出又导入文件xxx.out中,如果不写这个会提示:nohup重定向标准错误到标准输出。

脚本最后一行是将当前终端启动的任务进程ID(PID)输出到指定的文件中,其中 $! 表示PID。

2、记得要给脚本授权

chmod 777 xxx-startup.sh

3、创建服务关闭脚本xxx-shutdown.sh,内容如下

#!/bin/bash
echo "关闭服务"
PID_FILE=./xxx.pid

if [ -e "$PID_FILE" ]; then
      kill -9 $(cat $PID_FILE)
      rm -f $PID_FILE
else 
      echo "找不到服务PID文件"
fi

在启动脚本中我们将进程ID(PID)保存到了服务对应的PID文件中,因此在关闭服务的脚本中,可以直接使用 kill -9 来杀掉服务进程,并将PID文件删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值