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

Сценарий инициализации для запуска перекрывающихся серверов при перезапуске службы

Как я могу создать сценарий инициализации, который запускает (и отслеживает) новый процесс до того, как старый будет полностью завершен при перезапуске?

Я разрабатываю службу node.js, которая должна иметь возможность корректно перезапускаться, например, при развертывании новой версии. Проблема в том, что у службы есть некоторые длительные задачи, которые необходимо выполнить, прежде чем процесс службы можно будет полностью завершить, но новый процесс должен быть запущен немедленно.

Обычно при разработке службы я бы создавал простой сценарий upstart-init, запускающий службу от имени непривилегированного пользователя, запускал развертывание от имени того же непривилегированного пользователя и в конце сценария развертывания отправлял SIGINT для выключения службы. Затем Upstart обнаружит, что служба завершена, и перезапустится с недавно развернутого кода.

На этот раз служба может отключиться до часа после получения SIGINT, и поэтому мне нужно запустить несколько процессов параллельно, и я не думаю, что выскочка предназначена для этого.

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