Al preguntar esto después de una discusión prolongada con un compañero de trabajo, realmente me gustaría una aclaración aquí.
Lanzo un proceso en segundo plano, ya sea agregando " &" a la línea de comando o deteniéndolo CTRL-Zy reanudándolo en segundo plano con " bg". Luego me desconecto.
¿Lo que pasa?
Estábamos bastante seguros de que debería haber sido asesinado por un SIGHUP, pero esto no sucedió; Al iniciar sesión nuevamente, el proceso se ejecutó felizmente y pstreemostró que fue "adoptado" por init.
Es este el comportamiento esperado?
Pero entonces, si es así, ¿cuál es el nohuppropósito del comando? Simplemente parece que el proceso no se va a matar de todos modos, con o sin él ...
Editar 1
Algunos detalles más:
- El comando se inició desde una sesión SSH, no desde la consola física.
- El comando se lanzó sin
nohupy / o&; luego se suspendió conCTRL-Zy se reanudó en segundo plano conbg. - La sesión ssh no cayó. Hubo un cierre de sesión real ("
exit" comando). - El proceso fue una
scpoperación de copia de archivos. - Al iniciar sesión nuevamente,
pstreemostró el proceso ejecutándose y siendo hijo deinit.
Editar 2
Para plantear la pregunta más claramente: ¿poner un proceso en segundo plano (usando &o bg) hará que se ignore SIGHUP, tal como lo hace el nohupcomando?
Editar 3
Traté de enviar manualmente un SIGHUPa scp: salió, por lo que definitivamente no ignora la señal.
Luego intenté nuevamente iniciarlo, ponerlo en segundo plano y cerrar sesión: fue "adoptado" inity siguió ejecutándose, y lo encontré allí cuando volví a iniciar sesión.
Estoy bastante perplejo ahora. Parece que no SIGHUPse envió ningún mensaje a lo largo del cierre de sesión.
1>/dev/null 2>&1para bash, etc.?