Это продолжение Получают ли фоновые процессы СИГНАЛ при выходе из системы?.
Кажется, что 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
Кажется, я не могу добавить комментарий выше. Префикс отрицательного знака для обозначения группы процессов. Я думаю это повесит трубку все дочерние процессы, порожденные оболочкой, включают в себя внуков, правнуков и т. д.