Eri*_*ric 7 ssh shell daemon jenkins
我在构建项目的jenkins上有一个构建工作,在完成后,它在远程服务器上打开一个ssh shell脚本并传输文件,然后停止并启动一个守护进程.
当我从RHEL服务器上的命令行停止并启动守护程序时,它执行得很好.当作业在jenkins中执行时,没有错误.
守护进程停止正常,它开始很好.但是在开始后不久,守护进程突然死亡.
sudo service daemonName stop
# transfer files.
sudo service daemonName start
我确信这个问题并不存在
有谁知道Jenkins执行ssh shell脚本的方式有什么特别之处,这会导致守护程序启动不完全?
问题:当通过jenkins执行构建时,启动守护进程的命令显然已成功执行,但在构建作业完成后,守护进程将突然退出.
解决方案:我一直以为这是jenkins杀死守护进程.因此,我尝试了许多不同的化身和排列,禁用ProcessTree模块,通过并清理僵尸子进程.我试过通过重置BUILD_ID环境变量来欺骗它.没有任何效果.
感谢这个线程,我发现该解决方案仅适用于在BUILD机器上执行的子进程.IE不适用于我的问题.
更多搜索引导我:通过ssh运行持久化进程
解决方案?NOHUP.
因此,现在构建通过执行以下命令成功重新启动守护程序:sudo nohup service daemonname start
Jenkins监视由该作业产生的进程并杀死它们以避免僵尸进程.请参阅https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
解决方法是覆盖BUILD_ID环境变量:
BUILD_ID=dontKillMe
| 归档时间: | 
 | 
| 查看次数: | 6666 次 | 
| 最近记录: |