huponexit para shells sin inicio de sesión

huponexit para shells sin inicio de sesión

Este es un seguimiento de¿Los procesos en segundo plano reciben un SIGHUP al cerrar sesión?.

Parece que huponexitsolo 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 HUPal bash desde donde se iniciaron los procesos funciona como se esperaba, pero huponexitno 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 $$' EXITno 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.

información relacionada