Je suis ssh
allé sur mon serveur et j'ai couru wget -r -np zzz.aaa/bbb/ccc
et il a commencé à fonctionner. Ensuite, ma connexion Internet (chez moi) a été interrompue et je me suis inquiété en supposant que cela wget
avait été hup
interrompu car la ssh
connexion était perdue et donc le terminal était mort. Mais ensuite, j'ai ssh
édité sur mon serveur et j'ai réalisé qu'il fonctionnait toujours et mettait la sortie wget.log
et téléchargeait des trucs. Quelqu'un peut-il m'expliquer ce qui aurait pu se passer ici?
C'est ce ps
qui 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
Que signifie (point d'interrogation) ?
dans la colonne de tty
?
logind
, le comportement par défaut delogind
est de supprimer (SIGTERM) tous les processus appartenant à un utilisateur lorsque l'utilisateur se déconnecte. Ce comportement est donc spécifique au système.KillUserProcesses=no
.Réponses:
Les programmes (et scripts) peuvent choisir d'ignorer la plupart des signaux, à l'exception de quelques-uns
KILL
. LeHUP
signal peut être capturé et ignoré si le logiciel le souhaite.Ceci provient
src/main.c
deswget
sources (version 1.19.2):Un peu plus loin, le gestionnaire de signaux est installé:
Il semble
wget
donc ne pas ignorer leHUP
signal, mais il choisit de continuer le traitement avec sa sortie redirigée vers le fichier journal.Demandé dans les commentaires: La signification de
?
dans laTTY
colonne de la sortie deps
la question est que lewget
processus n'est plus associé à un terminal / ATS. Le TTY a disparu lorsque la connexion SSH a été interrompue.la source
Simple :
wget
ne s'arrête pasSIGHUP
. Il le faitSIGTERM
etSIGINT
pourtant.Il n'y a rien sur la
man
page mais si vous avez envoyéSIGHUP
unwget
processus, vous obtenez ceci dans le terminal:la source
kill -HUP pid
commande pour montrer comment on peut envoyerSIGHUP
à un processus.