Сделайте что-то, когда Супервизор получит SIGTERM

Я использую Супервизор для управления процессами. Действительно ли возможно иметь Супервизор, выполняет команду, когда это получает SIGTERM (или другой сигнал)?

0
задан 25 July 2014 в 17:04
2 ответа

Нет, невозможно настроить поведение супервайзера при получении сигнала(ов), не изменив исходный код и не добавив эту возможность.

Единственное, что можно сделать, это указать сигнал завершения процесса, когда он будет остановлен, с помощью опции "стопсигнал".

.
0
ответ дан 5 December 2019 в 13:39

Вот один из подходов к достижению желаемого:

(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

Вы можете найти реальный пример здесь .

0
ответ дан 5 December 2019 в 13:39

Теги

Похожие вопросы