Yo ssh
ed a mi servidor y ejecuté wget -r -np zzz.aaa/bbb/ccc
y empezó a funcionar. Entonces mi conexión a Internet (en mi casa) se interrumpió y me preocupé asumiendo que wget
ha estado hup
ped porque el ssh
se perdio la conexion y por lo tanto el terminal habia muerto. Pero luego ssh
ed a mi servidor y me di cuenta de que todavía se estaba ejecutando y poniendo la salida en wget.log
y descargando cosas. ¿Puede alguien explicarme qué pudo haber sucedido aquí?
Esto es lo que ps
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é hace (signo de interrogación) ?
media en la columna de tty
?
Respuesta aceptada:
Los programas (y scripts) pueden optar por ignorar la mayoría de las señales, excepto algunas como KILL
. El HUP
la señal se puede capturar e ignorar si el software así lo desea.
Esto es de src/main.c
del wget
fuentes (versión 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 poco más abajo está instalado el controlador de señales:
/* Setup the signal handler to redirect output when hangup is
received. */
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, redirect_output_signal);
Entonces se parece a wget
no es ignorar el HUP
señal, pero elige continuar procesando con su salida redirigida al archivo de registro.
Solicitado en los comentarios:¿El significado del ?
en el TTY
columna de la salida de ps
en la pregunta es que el wget
el proceso ya no está asociado con una terminal/TTY. El TTY desapareció cuando se cayó la conexión SSH.