Me ssh
ed para mi servidor y corriendo wget -r -np zzz.aaa/bbb/ccc
y comenzó a trabajar. Luego, mi conexión a Internet (en mi casa) se interrumpió y me preocupé suponiendo que wget
se había interrumpido hup
porque la ssh
conexión se había perdido y, por lo tanto, la terminal había muerto. Pero luego ssh
edité en mi servidor y me di cuenta de que todavía estaba ejecutándose y colocando la salida wget.log
y descargando cosas. ¿Puede alguien explicarme qué pudo haber sucedido aquí?
Esto es lo ps
que me da:
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
¿Qué significa (signo de interrogación) ?
en la columna de tty
?
logind
, el comportamiento predeterminado delogind
es matar (SIGTERM) todos los procesos que pertenecen a un usuario cuando el usuario cierra la sesión. Entonces este comportamiento es específico del sistema.KillUserProcesses=no
.Respuestas:
Los programas (y los scripts) pueden elegir ignorar la mayoría de las señales, excepto algunas como
KILL
. LaHUP
señal se puede capturar e ignorar si el software así lo desea.Esto es
src/main.c
de laswget
fuentes (versión 1.19.2):Un poco más abajo está instalado el controlador de señal:
Por lo tanto, parece que
wget
no ignora laHUP
señal, pero elige continuar procesando con su salida redirigida al archivo de registro.Solicitado en los comentarios: El significado de
?
en laTTY
columna de la salida deps
la pregunta es que elwget
proceso ya no está asociado con un terminal / TTY. El TTY desapareció cuando se cortó la conexión SSH.fuente
Simple :
wget
no abortaSIGHUP
. Lo haceSIGTERM
ySIGINT
, sin embargo.No hay nada en la
man
página, pero si lo envióSIGHUP
a unwget
proceso, lo obtiene en la terminal:fuente
kill -HUP pid
comando para mostrar cómo se puede enviarSIGHUP
a un proceso.