Runit - система инициализации во многих дистрибутивах Linux (например, [[software:administration:linux:distributives:voidlinux|VoidLinux]]). ====== Управление сервисами в Runit ====== За управление сервисами в системе инициализации runit отвечает утилита ''sv''. sv ^ Подкоманда ^ Описание действия ^ | start | Аналогично ''up'', но в течение 7 секунд пытается перезапустить в случае ошибки сервиса до получение эффекта, потом выводит состояние | | stop | Аналогично ''down'', но в течение 7 секунд ожидает эффекта, потом выводит состояние сервиса | | status | Выводит состояние сервиса | | up | Запускает сервис, в случае ошибки запуска --- пытается перезапустить | | down | Останавливает сервис отправкой сигнала SIGTERM, если через какое-то время процесс остается запущенным --- посылает SIGKILL | | once | Запускает сервис, если произошла ошибка запуска --- не пытается перезапустить | | pause | FIXME | | exit | Посылает процессу сервиса SIGTERM и SIGCONT, ждет завершения процесса логгирования (если есть) и завершает процесс ''runsv'' для процесса сервиса | | reload | Отпраляет процессу SIGHUP и выводит состояние процесса сервиса | | restart | Пытается в течение 7 секунд остановить сервис (SIGTERM), потом выполняет его запуск и выводит отчет о состоянии | | shutdown | Аналогично ''exit'', но ожидает 7 секунд и выводит отчет | Для ''stop'', ''reload'', ''restart'' и ''shutdown'' доступен префикс ''force-''. ====== Скелет сервиса ====== В системе, использующей runit, под скрипты запуска и настройки сервисов выделен каталог ''/etc/sv''. |\_ check* |\_ run* |\_ down |\_ finish* \__ log/ \_ run* Для автостарта сервиса следует создать символическую ссылку в каталоге ''/run/runit/runsvdir/current''((в [[..:distributives:voidlinux:|VoidLinux]] для упрощения создана ссылка ''/var/service'' на данный каталог)). В случае, если присутствует файл ''down'' в каталоге сервиса, автостарт не будет производится((содержимое файла down игнорируется)). ===== Назначение файлов и подкаталогов ===== Основополагающим является файл запуска сервиса --- ''run''. Он определяет, как процесс сервиса будет запущен. Должен иметь флаг исполняемого((например, ''chmod +x run'')). FIXME В случае, если запускаемый процесс --- форкающийся, то для отслеживания его состояния следует использовать файл ''check'', описывающий, как отслеживать процесс. ==== Логгирование ==== Для включения логгирования каталог сервиса должен содержать подкаталог ''log'' и в нем файл исполняемый ''run'', который будет принимать stdout((для получения данных из stderr следует сделать перенаправление в stdout)) от основного скрипта ''run'' сервиса. Как пример, со следующим содержимым: #!/bin/sh exec vlogger -t service -p daemon