完成Jenkins任务后,我将使用Jenkins的后置条件配置部分执行Linux shell脚本。
该Linux Shell脚本希望在后端启动备用服务,并且不会导致Jenkins暂停。
我尝试使用“ nohup +&”等,但是它不起作用。
有一个好的方法吗?
詹金斯可能正在等待管道关闭。您的后台进程继承了一些文件描述符,并一直保持打开状态。
如果幸运的话,唯一的文件描述符是0、1和2(标准文件描述符)。您可能要使用lsof -p PIDPID是后台进程的进程ID 来检查后台进程的文件描述符。
lsof -p PID
您应该确保所有这些文件描述符(输入和输出)都已为后台进程重定向,因此应使用类似以下的命令启动它:
nohup daemon </dev/null >/dev/null 2>&1 &
可以将输出定向到其他文件,/dev/null但请确保保留重定向顺序。顺序很重要。
/dev/null
如果您计划从Jenkins作业启动后台进程,请注意,在构建结束时,Jenkins将终止后台进程。请参阅https://wiki.jenkins- ci.org/display/JENKINS/ProcessTreeKiller了解如何防止这种情况。