Как управлять длительно работающим серверным процессом в Ubuntu?

Как управлять длительно работающим серверным процессом в Ubuntu?

У меня есть приложение (в виде одного двоичного файла), которое мне нужно запустить на одном из моих серверов, и я хотел бы иметь возможность контролировать его жизненный цикл должным образом. Мне бы хотелось следующее:

  • простая одна команда запуск/остановка/перезапуск
  • как можно меньше настроек, я не хочу настраивать что-то крупное, вроде 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, но никаких планов на будущее пока не разработано.

Связанный контент