Назад | Перейти на главную страницу

huponexit для оболочек без входа

Это продолжение Получают ли фоновые процессы СИГНАЛ при выходе из системы?.

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

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

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

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

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

trap 'kill -HUP -$$' exit

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