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.