Окружающая среда:
У меня есть сервер Python, который разветвляется на 3 детей.
Для родителя:
- Предполагается, что SIGTERM убивает всех детей, а SIGHUP просто должен регистрироваться и существовать.
Для ребенка:
- И SIGTERM, и SIGHUP сопоставляются с SIG_DFL.
Проблема:
Когда я запускаю скрипт через командную строку python <script.py>
и отправляю SIGHUP родительскому kill -1 <pid-of-parent>
, он ведет себя хорошо. Родитель выходит, а занятые дети выходят только после завершения своих операций ввода-вывода.
Но если тот же сценарий запускается со сценарием systemd, когда я отправляю SIGHUP родителю, дочерние элементы, которые все еще заняты, получают SIGTERM, что приводит к нарушению ввода-вывода.
Любые объяснения/решения для этого? Это какая-то неправильная конфигурация?