GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il Wget non è morto dopo la perdita di connessione Ssh?

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.


Linux
  1. Come controllare la velocità della tua connessione ssh

  2. Perché "sshpass" non è il modo giusto per automatizzare i trasferimenti di file in Linux

  3. Perché l'espressione regolare funziona in X ma non in Y?

  4. Perché `md5sum` non fornisce lo stesso hash di Internet?

  5. Perché Grep -o -w non mi dà l'output previsto su Mac Os X?

Perché non installare pacchetti software da Internet

Perché lo script Bash non si chiude dopo l'esecuzione?

Perché non riesco a esportare il display Linux?

Perché rsync su SSH mi offre un throughput 10 volte superiore a quello di SCP?

SSH continua a disconnettersi dopo pochi minuti di inattività

SSH - Come includere il comando -t nel file ~/.ssh/config