当前位置: 首页 > 面试题库 >

詹金斯杀死了所有子进程

华锦
2023-03-14
问题内容

我有一个运行bash脚本的詹金斯工作。

在bash脚本中,我有效地执行了两个操作,例如

java ApplicationA &
PID_A=$!
java ApplicationB
kill $PID_A

但是如果手动中止了作业,则该作业ApplicationA仍然有效(如ps -ef节点计算机上的a所示)。我无法使用陷印等等,因为如果jenkins发送9信号(陷印不适用于9),那将不起作用。

如果可以将此作业配置为简单地杀死它产生的 所有 进程,那将是理想的,我该怎么做?


问题答案:

实际上,默认情况下,Jenkins具有一个名为 ProcessTreeKiller 的功能,该功能负责确保作业执行后 没有 剩余的进程在运行。

上面的链接说明了如何禁用该功能。您确定 因某种原因误将其禁用吗?

编辑:
根据作者的评论,基于有关禁用 ProcessTreeKiller
的信息,要实现相反的效果,必须将环境变量设置BUILD_ID为Jenkins作业的build id。这样,当 ProcessTreeKiller
查找正在运行的进程以杀死它时,它也会发现这一点


export BUILD_ID=$BUILD_ID

您还可以使用 Build Result Trigger
插件,配置第二个作业以清理应用程序,并将其配置为监视第一个作业的ABORTED状态作为触发器。



 类似资料:
  • 我得到了一个用java编写的应用程序,它在Unix上运行,并在启动时启动两个子进程(via)。如果应用程序因某种原因崩溃,子进程不会被杀死。 现在,我添加了一个关闭钩子,每次崩溃都会触发它,到目前为止还可以。但是我想在UNIX控制台上为应用程序的每个子进程发送一个SIGTERM信号(或至少SIGINT)。我应该能够通过找到他们的进程ID,但是我没有正确提取PID并为每个进程发送信号。 有人能帮忙吗

  • 问题内容: 我是Jenkins和Im的新手,我想让它在.NET项目中运行某些单元测试。 当我运行构建时,尝试从git存储库获取时会挂起。 错误:10分钟后超时 C:\ Program Files \ Git \ cmd \ git.exe配置–local –remove-section凭证#timeout = 10错误:提取远程回购源hudson.plugins.git.GitException错

  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。

  • 问题内容: 如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)运行测试。我的服务器在RedHat 6.1 Linux上运行。我想我都需要插件/库,但我仍然不知道如何使其工作。我第一次与Jenkins合作(在服务器端)。 //编辑: 如果有人也可以共享想法如何构建覆盖率报告,那将是很棒的。 提前致谢 :)。 问题答案: 说詹金斯和QUnit只是难题的一

  • 我想做一些非常简单的事情,在一个文件夹中,我有一个jar文件和一个包含脚本的名为脚本的文件夹。但我可以让詹金斯拉链来做这件事。 zip目录:“awsdeploy”,排除:“”,glob:“”,“scripts/”,zipFile:“SQSToElasticProcessor.zip” 必须显式命名“zip”的参数。@ 第 31 行,第 16 列。

  • 问题内容: 我们的jenkinsCI服务器(v1.499)运行在CI计算机上调用URL的测试。这些URL后面的应用程序会随着单元测试过程的更改而更改相同的临时文件,因此这些文件需要可组写。我已经为Apache修复了该问题,但詹金斯却完全失败了。 进行修改以包含命令没有帮助。重新启动服务后,我正在检查。 那么,如何更改詹金斯的umask设置? 问题答案: 通过配置守护程序来设置umask,只需将其添