Ich ssh
ed zu meinem Server und führte wget -r -np zzz.aaa/bbb/ccc
aus und es fing an zu arbeiten. Dann wurde meine Internetverbindung (bei mir zu Hause) unterbrochen und ich machte mir Sorgen, weil ich annahm, dass wget
war hup
ped, weil der ssh
Die Verbindung ging verloren und daher war das Terminal gestorben. Aber dann ssh
ed an meinen Server und stellte fest, dass er noch lief und die Ausgabe in wget.log
ablegte und Sachen herunterladen. Kann mir bitte jemand erklären, was hier passiert sein könnte?
Das ist was ps
gibt mir:
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
32283 0.6 29.4 179824 147088 ? S 14:00 1:53 wget -r -np zzz.aaa/bbb/ccc
Was es tut (Fragezeichen) ?
bedeuten in der Spalte von tty
?
Akzeptierte Antwort:
Programme (und Skripte) können die meisten Signale ignorieren, mit Ausnahme einiger weniger wie KILL
. Das HUP
Signal kann abgefangen und ignoriert werden, wenn die Software dies wünscht.
Dies ist von src/main.c
des wget
Quellen (Version 1.19.2):
/* Hangup signal handler. When wget receives SIGHUP or SIGUSR1, it
will proceed operation as usual, trying to write into a log file.
If that is impossible, the output will be turned off. */
Etwas weiter unten ist der Signalhandler installiert:
/* Setup the signal handler to redirect output when hangup is
received. */
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, redirect_output_signal);
Es sieht also wie wget
aus nicht ignoriert das HUP
Signal, aber es entscheidet sich dafür, die Verarbeitung fortzusetzen, wobei die Ausgabe in die Protokolldatei umgeleitet wird.
In Kommentaren erbeten:Die Bedeutung des ?
im TTY
Spalte der Ausgabe von ps
in der frage steht, dass die wget
Prozess ist nicht mehr mit einem Terminal/TTY verbunden. Das TTY ging weg, als die SSH-Verbindung unterbrochen wurde.