вторник, 5 августа 2025 г.

Rocky Linux 9. Сервис Supervisor

Supervisor - это инструмент управления процессами в Linux.

Установка и запуск сервиса:
# yum install supervisor
# systemctl start supervisord
# systemctl enable supervisord


Файлы конфигурации процессов, за которыми будет следить supervisor хранятся тут: /etc/supervisord.d/
Для создания нового сервиса под управлением supervisor нужно создать новый файл в данном каталоге.
Для примера создадим сервис отслеживания и отправки писем.
# nano /etc/supervisord.d/mailer_worker.ini

Содержимое файла сервиса:
[program:mailer_worker]
; Команда запуска скрипта:
command=/usr/bin/php /var/mailer/mailer_worker.php
directory=/var/mailer
; process_name=%(program_name)s_%(process_num)02d
; process_name - Имя процесса (если запущено несколько воркеров)
; numprocs=2 ; Количество процессов (воркеров)
autostart=true
autorestart=true
; Количество попыток перезапуска:
startretries=10
user=korolev
; Логи. Ошибки перенаправляются в stdout
; Директория логов должна существовать
redirect_stderr=true
stdout_logfile=/var/log/supervisor/mailer_worker.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3
; Время на корректное завершение перед SIGKILL
stopwaitsecs=60


Главная строчка конфигурации – это команда:
command=/usr/bin/php /var/mailer/mailer_worker.php
При запуске просто так в командной строке, этот скрипт должен уходить в бесконечный цикл и не завершаться. Это главное условие работы сервиса mailer_worker под управлением supervisor.
Директива user определяет пользователя, под чьим именем будет работать сервис в системе.

Создаем директорию для логов сервиса supervisor:
# mkdir -p /var/log/supervisor
# chown -R korolev:korolev /var/log/supervisor


Запуск сервиса после добавления или изменения конфигурационных файлов:
# supervisorctl reread
# supervisorctl update
# supervisorctl start mailer_worker:*


Служебные команды проверки работы supervisor:
# supervisorctl status // Статус запущенных процессов
# supervisorctl avail // Проверка программ, под управлением supervisor
# systemctl restart supervisord // Перезапуск
# supervisorctl stop mailer_worker:* // Остановка сервисов, с именем mailer_worker
# supervisorctl start mailer_worker:* // Запуск сервисов, с именем mailer_worker

Комментариев нет:

Отправить комментарий