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
Надеюсь, что это кому-то поможет