Jenkins——应用篇——如何解决execute shell中启动的进程被在Job退出时被杀死问题

本文详细介绍了在Jenkins中,当使用execute shell或windows batch启动进程(如tomcat)时,如何避免这些进程在Job结束时被自动杀死。Jenkins提供了两种方法来解决这个问题:通过启动参数禁用子进程杀死特性,或者修改BUILD_ID环境变量。文中给出了具体的操作步骤和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是Jenkins应用系统文章的一部分,大部分来自工作和学习中的实践,部分内容来自官方文档和网友的文章,引用的文章会在“参考资料”部分附上原始链接,如无意中侵犯您的权利,请联系QQ:46106962,如需要进一步的交流请加入QQ群:(Jenkins部落:469536515,Jenkins部落-2:141762278)。转载和使用请注明出处。


        在部落内部时不时的会有同学问一为什么在execute shell中不能启动tomcat、为什么在windows batch中不能启动tomcat等问题,其实大部分情况下不是不能启动,而是启动后随着job结束进程被杀死,造成不能启动的假象,这一点从tomcat的日志中可以看来,虽然也给出了解决方法,但没有回答本质问题,利用周末和晚上的时间对这个问题进行探究,并总结下来供大家参考。

       Jenkins为了有效的杀死job运行时创建的子进程,提供了一些原生代码找到并杀死它们,这样做非常合理,当一个job结束时势必要杀死运行期间启动的进程,否则系统里会留下很多僵尸进程。尽管Jenkins声称这个功能在各种环境下做了测试,但为了应付在特殊环境下出现的特殊情况,Jenkins提供了禁用此特性的方法。

       Jenkins的做法虽然非常合理,但也造成了一些问题,如我们希望在execute shell或windows batch中启动的web应用在job结束后继续运行,可以通过两种方法达到这个目录,下面分介绍。

方法一:通过Jenkins提供的启动参数禁用杀死子进程的特性

        Jenkins提供了hudson.util.ProcessTree.disable和hudson.util.ProcessTreeKiller.disable两个属性来控制些特性,值为true将禁用此特性。hudson.util.ProcessTree.disable从Jenkins 1.260开始使用,而使用1.315之

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值