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}"