Jenkins seems to be the target for nohup in a script started via ssh, how can I prevent that?

前端 未结 4 448
暗喜
暗喜 2021-01-14 00:35

I am trying to create a Jenkins job that restarts a program that runs all the time on one of our servers.

I specify the following as the command to run:



        
相关标签:
4条回答
  • 2021-01-14 01:00

    If I understood the question correctly, Jenkins is killing all processes at the end of the build and you would like some process to be left running after the build has finished.

    You should read https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller

    Essentially, Jenkins searches for processes with some secret value in BUILD_ID environment variable. Just override it for the processes you want to be left alone.

    0 讨论(0)
  • 2021-01-14 01:04

    I had a similar problem with runnning a shell script from jenkins as a background process. I fixed it by using the below command:

    BUILD_ID=dontKillMe nohup ./start-fitnesse.sh &

    In your case, BUILD_ID=dontKillMe nohup java NameOfClass &

    0 讨论(0)
  • 2021-01-14 01:10

    In the new Pipeline jobs, setting BUILD_ID no longer prevents Jenkins from killing your processes once the job finishes. Instead, you need to set JENKINS_NODE_COOKIE:

    sh 'JENKINS_NODE_COOKIE=dontKillMe nohup java NameOfClass &'
    

    See the wiki on ProcessTreeKiller and this comment in the Jenkins Jira for more information.

    0 讨论(0)
  • 2021-01-14 01:15

    Try adding the & in the Jenkins build step and redirecting the output using > nohup.out.

    0 讨论(0)
提交回复
热议问题