完成 Jenkins 任务后,我使用 Jenkins 的后置条件配置部分执行 Linux shell 脚本。
这个 Linux shell 脚本想要在后端启动备用服务,并且不能导致 Jenkins 暂停。
我尝试使用“nohup+&”等,但不起作用。
有没有好的办法呢?
詹金斯可能正在等待一些管道关闭。您的后台进程继承了一些文件描述符,并在运行期间保持它们打开状态。
如果幸运的话,唯一的文件描述符是 0、1 和 2(标准的)。您可能需要使用以下命令检查后台进程的文件描述符lsof -p PID
其中 PID 是后台进程的进程 ID。
您应该确保所有这些文件描述符(输入和输出)都被重定向到后台进程,因此以如下方式启动:
nohup daemon </dev/null >/dev/null 2>&1 &
随意将输出定向到除/dev/null
但请确保保持重定向的顺序。顺序很重要。
如果您计划从 Jenkins 作业启动后台进程,请注意 Jenkins 将在构建结束时终止后台进程。看https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller关于如何防止这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)