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

Сделайте что-нибудь, когда Supervisor получает SIGTERM

Я использую 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».