Je ssh
envoyé à mon serveur et exécuté wget -r -np zzz.aaa/bbb/ccc
et ça a commencé à fonctionner. Ensuite, ma connexion Internet (chez moi) a été interrompue et je me suis inquiété en supposant que wget
a été hup
ped parce que le ssh
la connexion a été perdue et donc le terminal est mort. Mais ensuite j'ai ssh
ed à mon serveur et s'est rendu compte qu'il était toujours en cours d'exécution et mettait la sortie dans wget.log
et télécharger des trucs. Quelqu'un peut-il m'expliquer ce qui aurait pu se passer ici ?
C'est ce que ps
me donne :
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
À quoi ça sert (point d'interrogation) ?
signifie dans la colonne de tty
?
Réponse acceptée :
Les programmes (et les scripts) peuvent choisir d'ignorer la plupart des signaux, à l'exception de quelques-uns comme KILL
. Le HUP
le signal peut être intercepté et ignoré si le logiciel le souhaite.
Ceci provient de src/main.c
du wget
sources (version 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 peu plus bas, le gestionnaire de signal est installé :
/* Setup the signal handler to redirect output when hangup is
received. */
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, redirect_output_signal);
Il ressemble donc à wget
n'ignore le HUP
signal, mais il choisit de continuer le traitement avec sa sortie redirigée vers le fichier journal.
Demandé en commentaires :La signification du ?
dans le TTY
colonne de la sortie de ps
dans la question est que le wget
le processus n'est plus associé à un terminal/TTY. Le TTY a disparu lorsque la connexion SSH a été interrompue.