当我将作业配置为停止和启动 tomcat 服务器时出现此错误:
处理泄露的文件描述符。有关更多信息,请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
当我用谷歌搜索时,我得到了推荐的解决方案,因为set BUILD_ID=dontKillMe
这是确切的解决方案吗?
如果是,我需要在哪里设置BUILD_ID?在蚂蚁/后期构建脚本中?
谁能澄清一下?
当我将作业配置为停止和启动 tomcat 服务器时出现此错误:
处理泄露的文件描述符。有关更多信息,请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
当我用谷歌搜索时,我得到了推荐的解决方案,因为set BUILD_ID=dontKillMe
这是确切的解决方案吗?
如果是,我需要在哪里设置BUILD_ID?在蚂蚁/后期构建脚本中?
谁能澄清一下?
Yes, creating fake BUILD_ID
for process tells Jenkins to ignore this process during detection spawned processes, so this process will be not killed after finishing job.
Usage: Enter BUILD_ID=dontKillMe
before your command, for example into Execute shell
build step:
BUILD_ID=dontKillMe nohup ./yourStartScript.sh &
Note: See also nohup
默认情况下,Jenkins将在构建完成时终止所有生成的进程。
要覆盖它,您需要创建环境变量BUILD_ID
。
转到Jenkins ->管理 Jenkins ->配置系统。
现在在Global properties部分,在Environment variables下,单击ADD按钮以添加新的Environment variable。给予name=BUILD_ID
并value=allow_to_run_as_daemon start_my_service
点击保存按钮。你完成了。
现在,即使在构建完成后,生成过程仍将继续执行。
当您启动 jenkins 服务器时,将此行添加为 JAVA_ARGS 参数(我将我的 /etc/default/jenkins 放在我的 Ubuntu 框中)
-Dhudson.util.ProcessTree.disable=true
你完成了
您正在从 Jenkins 调用一个生成另一个进程
的命令 - tomcat-start命令结束,但它的子进程仍在运行
(这是您尝试启动的实际 tomcat Web 服务器)。
詹金斯有时将这种情况确定为可能的问题,
但您提到的页面也解释了如何解决它(简而言之:除非您知道如何,否则
不要从詹金斯启动tomcat )。
尝试了不同的建议,但没有一个选项对我有用。最后我切换到以前版本的詹金斯,它工作。我从 2.3 切换到 1.581 并且它起作用了。