Загрузка...
Загрузка...

Supervisor или как запускать скрипты в фоне

•   Программирование   •

Supervisor или как запускать скрипты в фоне
04 ноя 2016

Supervisor или как запускать скрипты в фоне

Часто бывает потребность в запуске определенных скриптов в фоновом режиме. Многие просто ставят "&" и радуются, но скрипты имеют свойство падать в самый неподходящий момент и хотелось бы сразу их заново запускать и читать логи. На помощь приходит supervisor.

Supervisor - менеджер долгосрочных процессов, который выступает в качестве прослойки для мониторинга и управления Вашими процессами.

Установка

apt-get install supervisor

После установки supervisor должен запуститься сам, но для пущей надежности лучше его рестартануть:

service supervisor restart

Установка завершена...

Настройка

Запуск каждого процесса(скрипта) осуществляется при помощи создания конфигурационного файла с расширением .conf в папке 

/etc/supervisor/conf.d

Переходим в папку:

cd /etc/supervisor/conf.d

Создаем файл запуска процесса "test":

nano test.conf

В файле пишем:

[program:test]
command=/home/test.py
autostart=true
autorestart=true
stderr_logfile=/var/log/test.err.log
stdout_logfile=/var/log/test.out.log

А теперь все разберем:

[program:test] - задает названия процесса в supervisor, в данном случае "test"

command=/home/test.py - полный путь к запускаемому скрипту
autostart=true - запускать ли процесс при старте системы, доступные варианты: true, false
autorestart=true - запускать ли процесс при его остановке, доступные варианты: true, false, unexpected (запускать в том случае, если процесс был завершен неправильно)
stderr_logfile=/var/log/test.err.log - файл с выводом лога ошибки
stdout_logfile=/var/log/test.out.log - файл с выводом лога процесса при работе

Данные параметры минимальные для запуска скрипта, полный список параметров находится здесь.

Настройка закончена, нужно, что б supervisor считал обновленные настройки:

supervisorctl reread

После того, как настройки считаны - нужно дать комманду запуска все сконфигурированых процессов, для этого вводим:

supervisorctl update

Всё, все процессы запущены и работают проверить статус Ваших процессов можете с помощью cli:

supervisorctl

Как только выполняете эту команду - видите текущие процессы и их статусы. Можете ввести help, что б получить помощь по командам.

Основные команды: start, stop, restart

Что б перезапустить процесс вводите:

restart test

Где рестарт - комманда, а test - название процесса

Что б выйти из cli, вводим:

quit

Надеюсь, что это кому-то поможет