Я начинаю преобразовывать все наши системы в использование upstart для управления различными процессами приложения. Одна вещь, которую я постоянно упускаю, - это возможность отправлять другой сигнал процессу stop
или restart
событиям.
Например, мы запускаем наши веб-процессы с помощью Unicorn . Unicorn имеет отличный API для обработки сигналов. Когда я хочу изящно перезагрузить процесс, я посылаю мастеру pid сигнал USR2. Чтобы закрыть их изящно, я посылаю команду ВЫХОДА. TERM (сигнал остановки upstart по умолчанию) представляет собой немедленное отключение.
Другой пример - использование Resque . Чтобы изящно закрыть работника, я посылаю ему сигнал ВЫХОДА. Сигнал TERM снова вызывает немедленное отключение независимо от того, разветвлен ли ребенок работника или нет.
Поддерживает ли upstart пользовательские сигналы? Кажется, я нигде не могу его найти, и меня беспокоит, что я использую «неправильный инструмент для работы».
источник
reload signal SIGUSR2
, но требует upstart v 1.10.0.Начиная с upstart v1.10.0 вы можете определить «сигнал перезагрузки».
https://launchpad.net/upstart/1.x/1.10.0
Эта версия доступна в Ubuntu начиная с версии 13.10 ... Я использовал эти инструкции для обновления своего экземпляра ec2:
/ubuntu/302762/upgrading-13-04-to-13-10
Я использую rails + puma и выполняю изящные перезагрузки с помощью этой директивы в моем файле /etc/init/app-1.conf:
источник