美文网首页
jenkins的job里启动后台服务的处理方法

jenkins的job里启动后台服务的处理方法

作者: belllee | 来源:发表于2019-01-17 10:51 被阅读0次

现象

在job里通过nohup或者()方式启动后台服务,但是job结束后后台服务没有启动。如果不使用nohup或者()方式启动,job就会被后台服务占用,一直不结束。

原因

Jenkins 是在启动 Job 的时候会给子进程设置环境变量,在结束 Job 的时候会检查进程的环境变量,所有job生成的进程都会被kill 掉。详细说明,请见ProcessTreeKiller

解决办法

  1. 启动 Jenkins 的时候加上 -Dhudson.util.ProcessTree.disable=true,也就是 java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
  2. 在后台进程前加上 BUILD_ID=dontKillMe, 也就是
BUILD_ID=dontKillMe 
nohup java -jar project-1.0.jar > project.log &

相关文章

网友评论

      本文标题:jenkins的job里启动后台服务的处理方法

      本文链接:https://www.haomeiwen.com/subject/zdgbdqtx.html