完成Jenkins任务后,我使用Jenkins的后置条件配置部分执行Linux shell脚本。
这个Linux shell脚本想要在后端启动备用服务,不能导致Jenkins暂停。
我尝试使用“nohup +&”等,但它不起作用。
有没有好办法呢?
答案 0 :(得分:3)
如果幸运的话,唯一的文件描述符是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。
答案 1 :(得分:1)
我在从Jenkins运行shell脚本作为后台进程时遇到了类似的问题。我使用以下命令修复它:
BUILD_ID=dontKillMe nohup ./start-fitnesse.sh &