当我配置一个作业来停止和启动tomcat服务器时,我得到这个错误:
处理泄漏的文件描述符。查看http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
当我用谷歌搜索它时,我得到了一个推荐的解决方案set BUILD_ID=dontKillMe
这是正确的解吗?
如果是,我需要在哪里设置BUILD_ID?内部蚂蚁/后构建脚本?
有人能解释一下吗?
是,为进程创建假BUILD_ID
告诉Jenkins在检测衍生进程时忽略该进程,因此该进程在完成任务后不会被杀死。
用法:在命令前输入BUILD_ID=dontKillMe
,例如在Execute shell
构建步骤中:
BUILD_ID=dontKillMe nohup ./yourStartScript.sh &
注:参见nohup
默认情况下,Jenkins将在构建完成时杀死所有生成的进程。
要覆盖它,您需要创建环境变量BUILD_ID
。
转到Jenkins -> Manage Jenkins -> Configure System
现在在全局属性部分,在环境变量下,单击ADD按钮添加新的环境变量。给定name=BUILD_ID
和value=allow_to_run_as_daemon start_my_service
点击保存按钮。你就完成了。
现在生成过程将在构建完成后继续执行
当你启动你的jenkins服务器时,添加这行作为JAVA_ARGS参数(我把我的放在我的Ubuntu盒子的/etc/default/jenkins)
-Dhudson.util.ProcessTree.disable=true
你完成了
您正在调用Jenkins的命令,该命令会生成另一个进程-
tomcat-start命令结束,但它的子进程仍在运行
(这是您尝试启动的实际tomcat web-server)。
Jenkins有时会将这种情况视为一个可能的问题,
但是你提到的页面也解释了如何解决它
(简而言之:不要从Jenkins启动tomcat,除非你知道怎么做)。
尝试了不同的建议,但没有一个适合我。最后,我切换到以前版本的詹金斯,它工作。我从2.3切换到1.581,它工作了