GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el Wget no murió después de la pérdida de la conexión Ssh?

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.


Linux
  1. Cómo comprobar la velocidad de su conexión ssh

  2. Por qué 'sshpass' no es la forma correcta de automatizar las transferencias de archivos en Linux

  3. ¿Por qué la expresión regular funciona en X pero no en Y?

  4. ¿Por qué el Pgid de los procesos secundarios no es el Pid del padre?

  5. ¿Conexión Ssh rechazada desde el interior de la LAN?

¿Por qué no instalar paquetes de software desde Internet?

¿Por qué el script de Bash no se cierra después de la ejecución?

¿Por qué Grep -o -w no me da la salida esperada en Mac Os X?

¿Cómo recuperar/matar una sesión Ssh después de perder la conexión?

¿Por qué rsync sobre SSH me da 10 veces el rendimiento de SCP?

SSH sigue desconectándose después de unos minutos de inactividad