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

Как определять разные сигналы остановки / перезапуска с выскочкой

Я начинаю преобразовывать все наши системы в выскочку для управления различными процессами приложений. Одна вещь, которую мне постоянно не хватает, - это возможность отправить другой сигнал процессу на stop или restart События.

Например, мы запускаем наши веб-процессы с Единорог. Unicorn имеет отличный API для обработки сигналов. Когда я хочу корректно перезагрузить процесс, я отправляю мастеру pid сигнал USR2. Чтобы корректно выключить их, я отправляю команду QUIT. TERM (сигнал остановки выскочки по умолчанию) означает немедленное завершение работы.

Другой пример - использование Спасать. Чтобы корректно завершить работу рабочего, я отправляю ему сигнал QUIT. Сигнал TERM снова вызывает немедленное завершение работы, независимо от того, разветвлен ли дочерний элемент рабочего процесса или нет.

Поддерживает ли выскочка пользовательские сигналы? Кажется, я нигде не могу его найти, и меня беспокоит, что я использую «не тот инструмент для работы».

Начиная с версии v1.10.0, вы можете определить «сигнал перезагрузки».

https://launchpad.net/upstart/1.x/1.10.0

Эта версия доступна в ubuntu начиная с v13.10 ... Я использовал эти инструкции для обновления своего экземпляра ec2:

https://askubuntu.com/questions/302762/upgrading-13-04-to-13-10

Я использую rails + puma и делаю изящные перезагрузки с помощью этой директивы в моем файле /etc/init/app-1.conf:

reload signal SIGUSR2

Ubuntu 10.04 поставляется с выскочкой версии 0.6.6, которая имеет kill signal и kill timeout параметры, которые будут настраивать соответствующие значения сигнала и таймаута. Сигнал "перезагрузка" жестко запрограммирован на SIGHUP.

Более новые версии upstart представить reload signal параметр - см. другие ответы на этот вопрос для получения дополнительной информации.