Я использую supervisord для запуска и управления приложением FastCGI, которое я пишу на C для целевой Linux. У меня есть обработчик сигнала, который изящно выходит из моего приложения при получении SIGINT. Я проверил, что обработчик сигнала работает по желанию, запустив приложение в окне терминала и выпустив Ctrl-C для выхода.Передача сигнала в управляемые процессы с использованием supervisord
При выдаче команды «выключение» в supervisord (через supervisorctl), оказывается, что supervisord не может заставить приложение для выхода без вызова SIGKILL:
2010-08-20 10:02:49,661 INFO waiting for cse to die
2010-08-20 10:02:52,665 INFO waiting for cse to die
2010-08-20 10:02:55,669 INFO waiting for cse to die
2010-08-20 10:02:58,672 INFO waiting for cse to die
2010-08-20 10:02:59,673 WARN killing 'cse' (2031) with SIGKILL
2010-08-20 10:02:59,674 INFO stopped: cse (terminated by SIGKILL)
У меня есть следующие в моей supervisord.conf файл
stopsignal=INT
это мое предположение, что supervisord проблема «stopsignal» при вызове команды останова, поэтому я принимаю заявление INFO как признак того, что мое приложение не отвечает на SIGINT, выданным supervisord.
Как мне выполнить отладку сигнала, проходящего между супервизором и моим приложением?
Я подтвердил, что INT выдается при вызове команды останова, так «... ожидая, что cse to die» записи журнала определенно свидетельствуют о том, что приложение не видит SIGINT. – HikeOnPast