Я использую Supervisor для управления процессами. Возможно ли, чтобы Supervisor запускал команду при получении SIGTERM (или другого сигнала)?
Вот один из подходов к достижению желаемого:
(1) Создайте новый сценарий оболочки, назовем его woker.sh
:
#!/bin/bash
function do_something {
# do something
exit 0
}
trap do_something SIGTERM
while true; do
sleep 1
done
(2) Добавьте указанный выше файл сценария в файл конфигурации Supervisor. supervisord.conf
как новый раздел программы:
[program:worker]
command=/usr/local/bin/worker.sh
stderr_logfile = /var/log/supervisord/worker-stderr.log
stdout_logfile = /var/log/supervisord/worker-stdout.log
Вы можете найти реальный пример Вот.
Нет, невозможно настроить поведение Supervisor, когда он получает сигнал (ы), без изменения исходного кода и добавления этой возможности.
Единственное, что вы можете сделать, - это указать сигнал уничтожения для процесса, когда он будет остановлен, с помощью опции «stopignal».