28

当我将作业配置为停止和启动 tomcat 服务器时出现此错误:

处理泄露的文件描述符。有关更多信息,请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

当我用谷歌搜索时,我得到了推荐的解决方案,因为set BUILD_ID=dontKillMe
这是确切的解决方案吗?
如果是,我需要在哪里设置BUILD_ID?在蚂蚁/后期构建脚本中?
谁能澄清一下?

4

5 回答 5

16

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

于 2014-02-28T13:28:50.487 回答
10

默认情况下,Jenkins将在构建完成时终止所有生成的进程。

要覆盖它,您需要创建环境变量BUILD_ID

转到Jenkins ->管理 Jenkins ->配置系统

现在在Global properties部分,在Environment variables下,单击ADD按钮以添加新的Environment variable。给予name=BUILD_IDvalue=allow_to_run_as_daemon start_my_service
点击保存按钮。你完成了。

现在,即使在构建完成后,生成过程仍将继续执行。

于 2017-08-24T10:27:27.237 回答
6

当您启动 jenkins 服务器时,将此行添加为 JAVA_ARGS 参数(我将我的 /etc/default/jenkins 放在我的 Ubuntu 框中)

-Dhudson.util.ProcessTree.disable=true

你完成了

于 2014-02-05T02:42:57.663 回答
3

您正在从 Jenkins 调用一个生成另一个进程
的命令 - tomcat-start命令结束,但它的子进程仍在运行
(这是您尝试启动的实际 tomcat Web 服务器)。

詹金斯有时将这种情况确定为可能的问题,
您提到的页面也解释了如何解决它(简而言之:除非您知道如何,否则
不要从詹金斯启动tomcat )。

于 2013-06-10T19:52:51.053 回答
0

尝试了不同的建议,但没有一个选项对我有用。最后我切换到以前版本的詹金斯,它工作。我从 2.3 切换到 1.581 并且它起作用了。

于 2020-06-30T03:50:04.363 回答