Io ssh
inviato al mio server ed eseguito wget -r -np zzz.aaa/bbb/ccc
e ha iniziato a funzionare. Poi la mia connessione Internet (a casa mia) si è interrotta e mi sono preoccupato presumendo che wget
è stato hup
ped perché ssh
la connessione era persa e quindi il terminale era morto. Ma poi io ssh
ed al mio server mi sono reso conto che era ancora in esecuzione e mettendo l'output in wget.log
e scaricare roba. Qualcuno può spiegarmi cosa potrebbe essere successo qui?
Questo è ciò che ps
mi dà:
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
Che cosa fa (punto interrogativo) ?
significa nella colonna di tty
?
Risposta accettata:
I programmi (e gli script) possono scegliere di ignorare la maggior parte dei segnali, tranne alcuni come KILL
. Il HUP
il segnale può essere catturato e ignorato se il software lo desidera.
Questo è da src/main.c
del wget
fonti (versione 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. */
Un po' più in basso è installato il gestore del segnale:
/* Setup the signal handler to redirect output when hangup is
received. */
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, redirect_output_signal);
Quindi sembra wget
non è ignorare il HUP
signal, ma sceglie di continuare l'elaborazione con il suo output reindirizzato al file di registro.
Richiesto nei commenti:Il significato del ?
nel TTY
colonna dell'output da ps
nella domanda è che il wget
il processo non è più associato a un terminale/TTY. Il TTY è andato via quando la connessione SSH si è interrotta.