Nicht ausführen nohup Befehl von jenkins als hintergrund-Prozess
UPDATE: Basierend auf den unter Diskussion habe ich bearbeitet meine Antwort für genauere Beschreibung.
Ich versuche zu laufen ein nohup Befehl von jenkins. Der vollständige Befehl lautet
nohup java -jar /home/.../jar/server-process-0.35.jar prod >> /var/../server-process-prod.log 2>&1 &
Dieser Befehl funktioniert nicht. Ich kann sehen, dass der status als Erfolg in jenkins, aber keine java-Prozess in linux. Wenn ich 'ps -ef | grep java'
Allerdings, wenn ich entfernen Sie die Letzte '&' , dass ich es ändern vom laufen in forground statt hintergrund
Beginnt es zu arbeiten. Ich kann sehen, dass der java-Prozess gestartet.
Den original-Befehl funktioniert, Wenn ich es laufen auf der linux-Konsole.
Muss ich laufen, es von jenkins in der ursprünglichen form ist, die als hintergrund-Prozess. So, dass es unabhängig von jenkins.
Irgendwelche Hinweise, warum das passiert ist?
command ... &
. Sie können suchen Sie die Ausgabe von jobs
oder mit ps -ef | grep nohup
.Nein ist es nicht .. habe ich überprüft.
Funktioniert es, wenn Sie sagen, das gleiche, ohne
&
? Das ist nohup java -jar /home/.../jar/server-process-0.35.jar prod >> /var/../server-process-prod.log 2>&1
.Lassen Sie mich versuchen,
Jenkins tötet alle Prozesse hervorgebracht wird, wenn der job endet. Sie können ändern, BUILD_ID env-variable, dies zu vermeiden. Siehe here - und hier.
InformationsquelleAutor Utsav Gupta | 2016-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab das gleiche problem, Hinzugefügt:
in Shell Ausführen -> Command und inside release.py es ist:
und es funktioniert
InformationsquelleAutor Michu93
Lange Geschichte kurz, Jenkins tötet alle Prozesse hervorgebracht durch einen job einmal, dass der job beendet ist. Um dieses Verhalten zu überschreiben, müssen Sie eine Umgebungsvariable gesetzt werden.
Die variable scheint zu variieren von job-Typ job-Typ. Es verwendet werden
BUILD_ID
, aber für Pipeline-Aufträgen wirdJENKINS_NODE_COOKIE
, und es gibt mehrere andere erwähnt diese Antwort.So, wenn Sie Ihren Befehl in der Pipeline, würde es so Aussehen:
Sehen das wiki auf ProcessTreeKiller und dieser Kommentar in der Jira-Jenkins für weitere Informationen.
InformationsquelleAutor jpyams
Ich habe versucht, jede mögliche Kombination mit BUILD_ID, aber es hat nicht funktioniert.
Ich machte es schwierig, indem Sie "nohup Befehl > ausgegeben.txt&" in einem shell-Skript ausgeführt wurde, indem die execute shell, jenkins, es funktionierte perfekt!
InformationsquelleAutor PyTux
Beste einfache Lösung ist die Verwendung von "jetzt" anstatt "nohup"
In Ihrem job jenkins (execute shell) setzen :
InformationsquelleAutor Walid
In Ihre jenkins-shell-Skript versuchen:
Es funktionierte für mich!
InformationsquelleAutor Joao Vitor Marques