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-Z
ihn 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 pstree
zeigte, dass er von "übernommen" wurde init
.
Ist das das erwartete Verhalten?
Aber wenn ja, wozu dient der nohup
Befehl? 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
nohup
und / oder gestartet&
. es wurde dann mit suspendiertCTRL-Z
und im Hintergrund mit wieder aufgenommenbg
. - Die SSH-Sitzung wurde nicht abgebrochen. Es gab eine tatsächliche Abmeldung ("
exit
" Befehl). - Der Vorgang war ein
scp
Dateikopiervorgang. - Beim erneuten Anmelden wurde angezeigt,
pstree
dass 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 nohup
Befehl?
Bearbeiten 3
Ich habe versucht, manuell ein an SIGHUP
zu 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" init
und lief weiter, und ich fand es dort, als ich mich wieder anmeldete.
Ich bin jetzt ziemlich verwirrt. Es sieht so aus, SIGHUP
als ob beim Abmelden überhaupt kein gesendet wurde.
1>/dev/null 2>&1
umgeleitet, zB für Bash, etc.?