【问题标题】:Listener starting from terminal but not from Jenkins侦听器从终端开始,但不是从 Jenkins
【发布时间】:2017-01-04 10:45:03
【问题描述】:

我编写了一个 perl 脚本来启动数据库上的侦听器。 perl 脚本在从终端运行时运行良好,它启动了侦听器,即使我注销机器并重新登录,侦听器也已启动并运行(应该如此)。

但是当我尝试通过 Jenkins 做同样的事情时,我遇到了一个问题。我已将该 VM 添加为 Jenkins 上的从属设备,并从 Jenkins Execute Shell 选项运行相同的脚本。 Jenkins 的控制台输出显示侦听器已启动,ps -ef | grep tnsl 显示侦听器已启动,但前提是 Jenkins 的脚本正在运行。 Jenkins 构建完成后,ps -ef | grep tnsl 不会显示任何结果。

我一直在尝试调试这个。任何人都可以在这里发光吗?我理解这个问题在第一次阅读时可能听起来含糊不清,但我很乐意提供任何人认为必要的信息。

【问题讨论】:

标签: perl jenkins listener


【解决方案1】:

正如this answer 中提到的类似问题,Jenkins ProcessTreeKiller 监视生成的进程并消除它们以避免僵尸。

要为特定作业禁用此行为,请更改 ProcessTreeKiller 查找的环境变量 BUILD_ID。例如:

BUILD_ID=dontKillMe  /my/database/listener/script.pl

或者,可以在启动 Jenkins 时为所有作业禁用该功能:

java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2012-01-04
    • 1970-01-01
    • 2020-09-06
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多