huponexit для оболочек без входа в систему

huponexit для оболочек без входа в систему

Это продолжениеПолучают ли фоновые процессы сигнал SIGHUP при выходе из системы?.

Кажется, это huponexitработает только для оболочек входа. Как мне добиться такого поведения для оболочек без входа, например, тех, которые запускаются в моем окне терминала?

Отправка HUPв bash, откуда были запущены процессы, работает как и ожидалось, но huponexitне работает.

решение1

Вы можете объявить свой собственный код, который будет запущен при выходе из оболочки.

trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT

(Мое более раннее предложение trap 'kill -HUP $$' EXITне работает в bash 4.2, поскольку, если я правильно понимаю исходный код, bash пропускает часть своей обычной очистки, включая повторную отправку HUP, когда он уже обрабатывает условие выхода.)

решение2

trap 'kill -HUP -$$' exit

Кажется, я не могу добавить комментарий выше. Префикс с отрицательным знаком для обозначения группы процессов. Я думаю, это зависнетвседочерние процессы, порожденные оболочкой, включают внуков, правнуков и т. д.

Связанный контент