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

Как я могу использовать выскочку с программами запуска, поставляемыми поставщиком?

Например, я использую следующие команды для запуска и остановки определенного веб-приложения:

/usr/local/application/MyServiceController.sh all.start
/usr/local/application/MyServiceController.sh all.stop

Эти команды выполняют некоторые задачи настройки и запускают несколько процессов (httpd и java). Я хочу использовать выскочку для мониторинга и управления приложением, но не хочу отклоняться от процесса запуска, поддерживаемого поставщиком.

Возможно ли это, или я должен просто вернуться к сценарию инициализации в стиле SysV?

Если наличие Upstart Monitor не является обязательным, вы можете сделать что-то вроде следующего (Cookbook Upstart: Запуск одного экземпляра задания без PID):

start on filesystem    # or something more suitable
stop on runlevel [06]  # ditto

pre-start exec /usr/local/application/MyServiceController.sh all.start
post-stop exec /usr/local/application/MyServiceController.sh all.stop

Это в значительной степени эквивалентно сценарию sysvinit (у которого тоже нет мониторинга).

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