Wenn ich dies nach einem längeren Gespräch mit einem Kollegen frage, möchte ich hier wirklich eine Klarstellung.
Ich starte einen Hintergrundprozess, indem ich entweder " &" an die Befehlszeile anhänge oder indem ich CTRL-Zihn mit " bg" stoppe und im Hintergrund mit " " wieder aufnehme. Dann melde ich mich ab.
Was geschieht?
Wir waren uns ziemlich sicher, dass es von einem SIGHUP hätte getötet werden sollen, aber das ist nicht geschehen; Beim erneuten Anmelden lief der Prozess problemlos und pstreezeigte, dass er von "übernommen" wurde init.
Ist das das erwartete Verhalten?
Aber wenn ja, wozu dient der nohupBefehl? Es sieht so aus, als würde der Prozess sowieso nicht beendet werden, mit oder ohne ...
Bearbeiten 1
Einige weitere Details:
- Der Befehl wurde über eine SSH-Sitzung und nicht über die physische Konsole gestartet.
- Der Befehl wurde ohne
nohupund / oder gestartet&. es wurde dann mit suspendiertCTRL-Zund im Hintergrund mit wieder aufgenommenbg. - Die SSH-Sitzung wurde nicht abgebrochen. Es gab eine tatsächliche Abmeldung ("
exit" Befehl). - Der Vorgang war ein
scpDateikopiervorgang. - Beim erneuten Anmelden wurde angezeigt,
pstreedass der Prozess ausgeführt wird und untergeordnet ist voninit.
Bearbeiten 2
Um die Frage klarer zu formulieren: Wird ein Prozess, der in den Hintergrund gestellt wird (mit &oder bg) SIGHUP, genauso ignoriert wie der nohupBefehl?
Bearbeiten 3
Ich habe versucht, manuell ein an SIGHUPzu senden scp: es wurde beendet, sodass das Signal definitiv nicht ignoriert wird.
Dann habe ich versucht, es erneut zu starten, in den Hintergrund zu stellen und mich abzumelden: Es wurde von "adoptiert" initund lief weiter, und ich fand es dort, als ich mich wieder anmeldete.
Ich bin jetzt ziemlich verwirrt. Es sieht so aus, SIGHUPals ob beim Abmelden überhaupt kein gesendet wurde.
1>/dev/null 2>&1umgeleitet, zB für Bash, etc.?