
Este es un seguimiento de¿Los procesos en segundo plano reciben un SIGHUP al cerrar sesión?.
Parece que huponexit
solo funciona para shells de inicio de sesión. ¿Cómo obtengo ese comportamiento para shells sin inicio de sesión, por ejemplo, los que se inician en la ventana de mi terminal?
El envío HUP
al bash desde donde se iniciaron los procesos funciona como se esperaba, pero huponexit
no es así.
Respuesta1
Puede declarar su propio código para que se ejecute cuando se cierre el shell.
trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT
(Mi propuesta anterior trap 'kill -HUP $$' EXIT
no funciona a partir de bash 4.2, porque si entiendo la fuente correctamente, bash omite parte de su limpieza normal, incluido el reenvío de HUP, cuando ya está procesando una condición de salida).
Respuesta2
trap 'kill -HUP -$$' exit
Parece que no puedo agregar un comentario arriba. Anteponga un signo negativo para indicar un grupo de procesos. Creo que esto colgarátodoLos procesos secundarios generados por el shell incluyen nietos, bisnietos, etc.