解决jenkins中通过execute shell启动的进程会被杀死的问题

  • 2018-06-26
  • 浏览 (1091)

在jenkins中配置自动更新部署项目时,如果采取用execute shell启动/关闭tomcat,会发现可以进行关闭tomcat,但是无法启动tomcat,虽然构建会显示执行成功,但是查看进程,tomcat是没有启动的。这是因为Jenkins默认会在Build结束后Kill掉所有的衍生进程。需要进行以下配置,才能避免此类情况发生:

一、java启动war包解决方式
# 添加启动参数 -Dhudson.util.ProcessTree.disable=true
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

二、修改BUILD_ID
jenkins默认会在构建完成后杀掉构建过程中又jenkins中shell命令触发的衍生进程。jenkins根据BUILD_ID识别某个进程是否为构建过程的衍生进程,故修改BUILD_ID后,jenkins就无法识别是否为衍生进程,则此进程能在后台保留运行。

1、在execute shell中加入BUILD_ID=DONTKILLME,DONTKILLME仅仅为增加可读性,可以任意修改其它,在想保留的进程启动命令前加入这一行,例如:
BUILD_ID=DONTKILLME
sh /home/seaxiang/restart.sh
2、临时改变BUILD_ID值
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe

#此处放入shell脚本或者shell命令

BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID

0  赞