我正在尝试创建一个Jenkins作业,该作业将重新启动始终在我们的一台服务器上运行的程序。
我指定以下作为要运行的命令:
cd /usr/local/tool && ./tool stop && ./tool start
脚本“工具”包含如下一行:
nohup java NameOfClass &
该命令的输出在我的构建控制台中而不是在nohup.out中结束,因此该作业永远不会终止,除非我手动终止它,这会终止程序。
如何使nohup的行为与从终端执行的行为相同?
如果我对问题的理解正确,则Jenkins将在构建结束时终止所有进程,并且您希望在构建完成后保留某些进程运行。
您应该阅读https://wiki.jenkins- ci.org/display/JENKINS/ProcessTreeKiller
本质上,Jenkins在BUILD_ID环境变量中搜索具有某些秘密值的进程。只需为要单独处理的进程覆盖它即可。