Ich ging ssh
zu meinem Server und lief wget -r -np zzz.aaa/bbb/ccc
und es fing an zu arbeiten. Dann meine Internetverbindung (bei mir zu Hause) bekam unterbrochen und ich habe gesorgt davon aus, dass wget
wurde hup
ped , weil die ssh
Verbindung unterbrochen wurde und deshalb hatte das Terminal gestorben. Aber dann habe ich ssh
auf meinem Server festgestellt, dass er noch läuft und die Ausgabe wget.log
eingibt und Sachen herunterlädt. Kann mir bitte jemand erklären, was hier passiert sein könnte?
Das 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 bedeutet es (Fragezeichen) ?
in der Spalte von tty
?
logind
standardmäßiglogind
alle Prozesse eines Benutzers beendet werden (SIGTERM), wenn sich der Benutzer abmeldet. Dieses Verhalten ist also systemspezifisch.KillUserProcesses=no
.Antworten:
Programme (und Skripte) können die meisten Signale ignorieren, mit Ausnahme einiger weniger
KILL
. DasHUP
Signal kann abgefangen und ignoriert werden, wenn die Software dies wünscht.Dies ist aus
src/main.c
denwget
Quellen (Version 1.19.2):Etwas weiter unten ist der Signalhandler installiert:
Es sieht also so aus , als würde das Signal
wget
nicht ignoriertHUP
, aber die Verarbeitung wird fortgesetzt und die Ausgabe in die Protokolldatei umgeleitet.In Kommentaren angefordert: Die Bedeutung von
?
in derTTY
Spalte der Ausgabe vonps
in der Frage ist, dass derwget
Prozess keinem Terminal / TTY mehr zugeordnet ist. Das TTY ging weg, als die SSH-Verbindung unterbrochen wurde.quelle
Einfach :
wget
bricht nicht abSIGHUP
. Es geht aber weiterSIGTERM
und weiterSIGINT
.Es ist nichts auf der
man
Seite, aber wenn SieSIGHUP
an einenwget
Prozess gesendet haben , wird dies im Terminal angezeigt:quelle
kill -HUP pid
Befehl hinzufügen, um zu zeigen, wie manSIGHUP
an einen Prozess senden kann.