一尘不染

如何调用Shell脚本以启动后端Java进程?

jenkins

完成Jenkins任务后,我将使用Jenkins的后置条件配置部分执行Linux shell脚本。

该Linux Shell脚本希望在后端启动备用服务,并且不会导致Jenkins暂停。

我尝试使用“ nohup +&”等,但是它不起作用。

有一个好的方法吗?


阅读 319

收藏
2020-07-25

共1个答案

一尘不染

詹金斯可能正在等待管道关闭。您的后台进程继承了一些文件描述符,并一直保持打开状态。

如果幸运的话,唯一的文件描述符是0、1和2(标准文件描述符)。您可能要使用lsof -p PIDPID是后台进程的进程ID 来检查后台进程的文件描述符。

您应该确保所有这些文件描述符(输入和输出)都已为后台进程重定向,因此应使用类似以下的命令启动它:

nohup daemon </dev/null >/dev/null 2>&1 &

可以将输出定向到其他文件,/dev/null但请确保保留重定向顺序。顺序很重要。

如果您计划从Jenkins作业启动后台进程,请注意,在构建结束时,Jenkins将终止后台进程。请参阅https://wiki.jenkins-
ci.org/display/JENKINS/ProcessTreeKiller了解如何防止这种情况。

2020-07-25