I ssh
ed na můj server a spustil wget -r -np zzz.aaa/bbb/ccc
a začalo to fungovat. Pak se moje internetové připojení (u mě doma) přerušilo a já se obával, že wget
bylo hup
ped, protože ssh
spojení bylo ztraceno, a proto terminál nefungoval. Ale pak jsem ssh
ed na můj server a uvědomil jsem si, že stále běží a vložil výstup do wget.log
a stahování věcí. Může mi prosím někdo vysvětlit, co se zde mohlo stát?
To je to, co ps
mi dává:
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
Co to dělá (otazník) ?
střední hodnota ve sloupci tty
?
Přijatá odpověď:
Programy (a skripty) se mohou rozhodnout ignorovat většinu signálů, kromě několika jako KILL
. HUP
signál lze zachytit a ignorovat, pokud si to software přeje.
Toto je z src/main.c
z wget
zdroje (verze 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. */
O něco níže je nainstalován obslužný program signálu:
/* Setup the signal handler to redirect output when hangup is
received. */
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, redirect_output_signal);
Takže to vypadá jako wget
neignoruje HUP
signál, ale rozhodne se pokračovat ve zpracování s jeho výstupem přesměrovaným do souboru protokolu.
Požadováno v komentářích:Význam ?
v TTY
sloupec výstupu z ps
otázkou je, že wget
proces již není spojen s terminálem/TTY. TTY zmizel, když selhalo připojení SSH.