当我配置作业停止并启动tomcat服务器时,我收到此错误:
处理泄露的文件描述符。有关详细信息,请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
当我用谷歌搜索它时,我得到了一个推荐的解决方案set BUILD_ID=dontKillMe
这是确切的解决方案吗?
如果是,我需要在哪里设置BUILD_ID?内部蚂蚁/后期构建脚本?
有人可以澄清一下吗?
答案 0 :(得分:14)
是的,为进程创建假BUILD_ID
告诉Jenkins在检测生成的进程中忽略此进程,因此在完成作业后不会终止此进程。
用法:在命令前输入BUILD_ID=dontKillMe
,例如进入Execute shell
构建步骤:
BUILD_ID=dontKillMe nohup ./yourStartScript.sh &
注意:另请参阅nohup
答案 1 :(得分:7)
启动jenkins服务器时将此行添加为JAVA_ARGS参数(我将我的/ etc / default / jenkins放在我的Ubuntu框中)
-Dhudson.util.ProcessTree.disable=true
你已经完成了
答案 2 :(得分:3)
默认情况下,Jenkins将在构建完成时终止所有生成的进程。
要覆盖它,您需要创建环境变量BUILD_ID。
转到Jenkins - >管理Jenkins - >配置系统 现在在'全球属性'在“环境变量”下,单击“添加”按钮以添加新的“环境”变量。 给Name = BUILD_ID和value =' allow_to_run_as_daemon start_my_service' (没有引用)。 单击“保存”按钮。你完成了。
现在,即使在构建完成后,spawn进程仍将继续执行。
答案 3 :(得分:2)
你正在调用詹金斯的一个命令来产生另一个进程 -
tomcat-start 命令结束,但其子进程仍在运行
(这是您尝试启动的实际tomcat Web服务器。)
詹金斯有时会将这种情况视为一个可能的问题 但是the page you have mentioned也解释了如何解决它 (简而言之:除非你知道如何,否则不要从Jenkins开始 tomcat 。)
答案 4 :(得分:0)
尝试了不同的建议,但没有一个选项对我有用。最后,我切换到jenkins的早期版本,并且可以正常工作。我从2.3切换到1.581并成功了。