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-Z
y 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 pstree
mostró que fue "adoptado" por init
.
Es este el comportamiento esperado?
Pero entonces, si es así, ¿cuál es el nohup
propó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
nohup
y / o&
; luego se suspendió conCTRL-Z
y 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
scp
operación de copia de archivos. - Al iniciar sesión nuevamente,
pstree
mostró 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 nohup
comando?
Editar 3
Traté de enviar manualmente un SIGHUP
a 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" init
y siguió ejecutándose, y lo encontré allí cuando volví a iniciar sesión.
Estoy bastante perplejo ahora. Parece que no SIGHUP
se envió ningún mensaje a lo largo del cierre de sesión.
1>/dev/null 2>&1
para bash, etc.?