У меня есть приложение (в виде одного двоичного файла), которое мне нужно запустить на одном из моих серверов, и я хотел бы иметь возможность контролировать его жизненный цикл должным образом. Мне бы хотелось следующее:
- простая одна команда запуск/остановка/перезапуск
- как можно меньше настроек, я не хочу настраивать что-то крупное, вроде monit, или писать 500 строк скриптов оболочки
- обрабатывать stdout/stderr/failures в файле журнала
- управлять pid-файлом таким образом, чтобы pid-файл существовал только в том случае, если процесс запущен (кажется, это действительно сложно сделать вручную, используя скрипты оболочки правильно)
- (необязательный)иметь возможность что-то сделать, если двоичный файл выйдет из строя
- (необязательный)автоматически запускается в случае перезагрузки сервера и/или сбоя приложения
Мне нужно легковесное решение, которое идеально работает с Ubuntu Server «из коробки», без особой настройки.
решение1
Для Ubuntu, я думаюВыскочкаэто то, что вы ищете.
https://askubuntu.com/questions/19320/how-to-enable-or-disable-services В этом вопросе AskUbuntu содержится отличная информация о том, как начать заниматься тем, что вы делаете.
Короче говоря, скопируйте следующее в /etc/init/mybinary.conf.
description "My Binary"
author "Jakub Arnold <[email protected]>"
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
end script
exec mybinary
Это должно помочь вам приступить к следующему:
- Управление службами с помощью «service mybinary start/stop/status»
- Управление PID-файлами
- возрождение при сбое
- запускать при загрузке
- ведение журнала в /var/log/upstart/mybinary.log
Кулинарная книга Upstart содержит всю необходимую информацию:http://upstart.ubuntu.com/cookbook/
В качестве отступления я считаю нужным упомянуть, что Ubuntu планирует отказаться от Upstart в пользу Systemd, но никаких планов на будущее пока не разработано.