Jenkins | Jenkins构建成功服务进程关闭问题
Jenkins构建成功服务进程关闭问题
- 1. 原因
- 2. 解决
1. 原因
Jenkins 默认会在构建结束时终止所有由构建任务启动的子进程,即使使用了nohup或后台运行符号&。
2. 解决
在启动脚本中加上 BULID_ID=dontkillme
#--------------解决jenkins 自动关闭进程问题-------------
BULID_ID=dontkillme
#--------------解决jenkins 自动关闭进程问题--------------
如下 我的启动脚本
#!/bin/bash
#!/bin/bash# 停止旧服务
echo "停止 campus-admin 服务..."
PID=$(ps -ef | grep 'campus-admin.jar' | grep -v grep | awk '{print $2}')
if [ -n "${PID}" ]; thenkill -15 ${PID}sleep 3# 强制停止残留进程if ps -p ${PID} > /dev/null; thenkill -9 ${PID}fi
fi# 备份旧 Jar 包
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
echo "备份旧包到 campus-admin.jar.${TIMESTAMP}"
mv /home/app/campus-admin/campus-admin.jar /home/app/campus-admin/campus-admin.jar.${TIMESTAMP}# 复制新 Jar 包(假设从 Jenkins 工作空间拷贝)
echo "部署新包..."
cp /root/.jenkins/workspace/campus-admin/campus-admin/target/campus-admin.jar /home/app/campus-admin/# 启动新服务(指定日志路径)
#--------------解决jenkins 自动关闭进程问题-------------
BULID_ID=dontkillme
#--------------解决jenkins 自动关闭进程问题--------------echo "启动 campus-admin 服务...日志路径:/log/java/campus-admin.log"
setsid java -jar /home/app/campus-admin/campus-admin.jar > /log/java/campus-admin.log 2>&1 &# 检查启动状态
ps -ef|grep 'campus-admin.jar'
PID=$(ps -ef | grep 'campus-admin.jar' | grep -v grep | awk '{print $2}')
echo "应用启动成功,PID: ${PID}"