Jenkins中通过execute shell无法启动进程-解决方案合集

一、问题描述


jenkins使用publish over ssh,执行shell,没报错,日志输出成功

23:43:13 SSH: EXEC: completed after 10,225 ms
23:43:13 SSH: Disconnecting configuration [swarm2] ...
23:43:13 SSH: Transferred 1 file(s)
23:43:13 Finished: SUCCESS
但问题就是,在服务器上,该进程没有运行。。很尴尬。在jenkins上发现了问题所在



这是因为Jenkins默认会在Build结束后Kill掉所有的衍生进程。


二、解决方法


1.重设环境变量build_id


方式一:(会出现timed out or was interrupted after 120,001 ms连接超时):

BUILD_ID=dontKillMe
sh /home/cloud/exec/test.sh

脚本内容为:

echo "执行.........................."
java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar

方法二:

sh /home/cloud/exec/test.sh

脚本内容为:

export BUILD_ID=dontKillMe
nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
#奇怪如果去掉以下延时,就会被jenkins杀掉.尴尬。。。
sleep 10s

方式三:

通过daemonize方式来免杀

(1)test.sh脚本中不行
daemonize -E BUILD_ID=dontKillMe nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
sleep 10s


(2)test.sh脚本中不行
daemonize -E BUILD_ID=dontKillMe -o test.log -c /home/cloud/run  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &


(3)execute shell输入框中不行
daemonize -E BUILD_ID=dontKillMe -o test.log -c /home/cloud/run  /home/cloud/exec/test.sh


2.临时改变BUILD_ID值,使得jenkins不会找到并结束掉run.sh启动的后台进程

OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
sh /home/cloud/exec/test.sh
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
test.sh内容如下:
echo "执行.........................."
nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
#奇怪如果去掉以下延时,就会被jenkins杀掉.尴尬。。。
sleep 10s

3.通过Jenkins提供的启动参数禁用杀死子进程的特性


3.1使用java -jar启动,-Dhudson.util.ProcessTree.disable=true -jar jenkins.war
3.2使用Tomcat启动,Linux系统修改catalina.sh,在环境变量的说明后,脚本开始前加上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";Windows系统修改catalina.bat,在环境变量的说明后,脚本开始前加上set JAVA_OPTS=%JAVA_OPTS% "-Dhudson.util.ProcessTree.disable=true";修改好Tomcat的配置文件后重新启动Tomcat



坑:
由于jenkins构建完毕后会杀掉所有启动的进程,可以通过改变BUILD_ID的值来防止后台进程被杀死

如果采用maven工程进行构建,修改BUILD_ID无效,后台进程随着jenkins构建完成后仍被杀死


参考:

https://blog.csdn.net/wangbin0016/article/details/41948171

https://blog.csdn.net/houyefeng/article/details/52269366

https://www.jianshu.com/p/a7d7df97fe4b

https://blog.csdn.net/zhangpan_soft/article/details/79575981

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值