Сценарий инициализации для запуска перекрывающихся серверов при перезапуске службы
Как я могу создать сценарий инициализации, который запускает (и отслеживает) новый процесс, прежде чем старый полностью завершается при перезапуске?
Я разрабатываю сервис node.js, который должен иметь возможность корректного перезапуска, например, при развертывании новой версии. Проблема заключается в том, что у службы есть несколько долгосрочных задач, которые необходимо выполнить, прежде чем процесс службы может быть полностью остановлен, но новый процесс должен быть запущен немедленно.
Обычно при разработке службы я создаю простой сценарий upstart-init-script, запускающий службу от имени непривилегированного пользователя, запускаю развертывание от имени того же непривилегированного пользователя и, в конце сценария развертывания, отправляю SIGINT для выключения службы. Затем Upstart обнаружит, что служба завершена, и перезапустится из вновь развернутого кода.
На этот раз, однако, после получения SIGINT сервису может потребоваться до часа, чтобы завершить работу, и поэтому мне нужно запустить несколько процессов в параллели, и я не думаю, что выскочка предназначена для этого.
Я думаю, я мог бы пропустить upstart и просто запустить новый процесс в сценарии развертывания и отсоединить его, но это означало бы, что я потерял бы функцию автоматической загрузки / рестарта / запуска / остановки, которую предоставляет upstart, так что я бы предпочел этого не делать.