Aclaración sobre señales (suspiro), trabajos y la terminal de control.

Aclaración sobre señales (suspiro), trabajos y la terminal de control.

He leído dos perspectivas diferentes y estoy tratando de descubrir cuál es la correcta.

1) Algunas fuentes en línea dicen que las señales enviadas desde el terminal de control SÓLO se envían al grupo de proceso de primer plano. Eso significa que si desea que un proceso continúe ejecutándose en segundo plano cuando cierra la sesión, es suficiente simplemente suspender el trabajo (ctrl-Z) y reanudarlo en segundo plano (bg). Luego puede cerrar sesión y continuará ejecutándose porque SIGHUP solo se envía al trabajo en primer plano.

Ver:http://blog.nelhage.com/2010/01/a-brief-introduction-to-termios-signaling-and-job-control/

...Además, si un terminal lee algún carácter generador de señal, genera la señal apropiada para el grupo de procesos de primer plano....

2) Otras fuentes afirman que es necesario utilizar el comando "nohup" en el momento en que se ejecuta el programa o, en su defecto, emitir un comando "disown" durante la ejecución para eliminarlo de la tabla de trabajos que escucha SIGHUP. Dicen que si no hace esto al cerrar sesión, su proceso también se cerrará incluso si se está ejecutando en un grupo de procesos en segundo plano.

Por ejemplo:http://docstore.mik.ua/orelly/unix3/upt/ch23_11.htm

...Si salgo de todos modos, el shell envía a mi trabajo en segundo plano una señal HUP...

En mis propios experimentos con Ubuntu Linux parece que 1) es correcto. Ejecuté un comando: "dormir 20 y", luego me desconecté, volví a iniciar sesión y presioné "ps aux". Efectivamente, el comando de suspensión todavía se estaba ejecutando.

Entonces, ¿por qué tanta gente parece creer en el número 2? Y si todo lo que tienes que hacer es colocar un trabajo en segundo plano para que siga funcionando, ¿por qué tanta gente usa "nohup" y "disown"?

información relacionada