Найти в Дзене

Void Linux (управление процессами в RunIt)

Добрый день дорогой читатель, данное повествование не является
истиной в последней инстанции, это некая инструкция по управлению процессами в Void Linux через средства самой системы инициализации runit. (в основном для собственного пользования) Void Linux с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности. runit это минималистичная система инициализации, кроссплатформенная и эффективная замена традиционным схемам инициализации Unix (таким как SysVinit) и современным альтернативам (таким как systemd). Она разработана с акцентом на надежность, простоту и высокую скорость загрузки системы. Основные характеристики и принципы работы: Преимущества: Runit популярен в таких дистрибутивах, как Void Linux и Artix Linux, где он
используется как основная система инициализации вместо более сложного
systemd. Команда sv это основной инструмент для взаимодействия с сервисами runit. Синтаксис: sudo sv [действие] [имя сервиса]
основные действия: Чтобы увид

Добрый день дорогой читатель, данное повествование не является
истиной в последней инстанции, это некая инструкция по управлению процессами в Void Linux через средства самой системы инициализации runit. (в основном для собственного пользования) Void Linux с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности.

runit это минималистичная система инициализации, кроссплатформенная и эффективная замена традиционным схемам инициализации Unix (таким как SysVinit) и современным альтернативам (таким как systemd). Она разработана с акцентом на надежность, простоту и высокую скорость загрузки системы.

Основные характеристики и принципы работы:

  • Минимализм и простота: Runit следует философии Unix: каждая программа делает одну вещь хорошо. Ядро runit, работающее как процесс с PID 1, выполняет минимум задач, перекладывая основную работу на другие утилиты.
  • Трехэтапный процесс: Работа runit как системы инициализации состоит из трех основных этапов:
    Этап 1: Выполнение одноразовых задач инициализации системы (скрипт /etc/runit/1).
    Этап 2: Запуск и управление всеми системными службами (через программу runsvdir). Этот этап активен на протяжении всего времени работы системы. Если он завершается с ошибкой, runit перезапускает его.
    Этап 3: Корректное завершение работы, выключение или перезагрузка системы (скрипт /etc/runit/3).
  • Супервизия служб (Process Supervision): Runit отлично справляется с задачей управления долгоживущими процессами (демонами). Программа runsv постоянно следит за службой и автоматически перезапускает ее в случае сбоя.
  • Структура сервисных директорий:
    Вместо сложных скриптов инициализации (как в SysV init), runit использует простую структуру директорий. Каждая служба определяется своей директорией (например, в /etc/sv/<имя_службы>/), которая должна содержать исполняемый файл run.
  • Параллельный запуск: Runit способен запускать службы параллельно, что значительно сокращает общее время загрузки операционной системы.
  • Надежное логирование: Включает в себя простую, но мощную утилиту логирования svlogd, которая поддерживает ротацию логов, сжатие и удаленное логирование.
  • Кроссплатформенность: Runit может работать в различных Unix-подобных операционных системах, включая Linux, *BSD, macOS и Solaris.

Преимущества:

  • Скорость: Быстрая загрузка благодаря параллелизму и минималистичному дизайну.
  • Надежность: Автоматический перезапуск упавших служб и гарантированное чистое состояние процессов.
  • Простота настройки: Управление службами через простые файлы и симлинки, что упрощает администрирование.

Runit популярен в таких дистрибутивах, как Void Linux и Artix Linux, где он
используется как основная система инициализации вместо более сложного
systemd. Команда sv это основной инструмент для взаимодействия с сервисами runit.

Синтаксис: sudo sv [действие] [имя сервиса]
основные действия:

  • status - статус сервиса
  • up - запуск сервиса
  • down - остановка сервиса

Чтобы увидеть список всех сервисов, которые в данный момент активны (находятся в каталоге /var/service/) и их текущий статус (up или down) следует выполнить следующую команду:

sudo sv status /var/service/*

Использование ls -l для проверки активации

runit активирует сервисы с помощью символических ссылок из /etc/sv/ в /var/service/. Вы можете проверить наличие ссылки, чтобы убедиться, что сервис "включен" вымолнив команду:

ls -l /var/service/*

в зависимости от состояния может показать следующие статусы

  • down: Сервис не запущен (возможно, он отключен или остановлен вручную).
  • down: sshd: 0s, normally up, wanted
  • normally down: Сервис не должен работать при нормальных условиях.
  • not found: Сервис не существует в /etc/sv/ или не активирован в /var/service/.

Что бы проверить статус конкретного сервиса например, sshd следует выполнить команду:

sudo sv status sshd

как видим выдал ошибку причин несколько либо пакет не установлен, либо не назначен симлинк на автозапуск давайте разбираться

sudo xpbs-query -s openssh

выхлоп данной команды говорит о том что пакет установлен, даже не было смысла выполнять следующую команду

sudo xpbs-query -Rs openssh

которая прошлась поиском по репозиторию, выполнив следюущую команду

ls -l /etc/sv/

выхлоп которой показал что сервис sshd нам доступен

-2

давайте создадим симлинк для sshd для того чтобы иметь возможность управлять сервисом

sudo ln -s /etc/sv/sshd /var/service/

убедимся что все прошло гладно выполнив команду

sudo ls -l /var/service/*

как видим симлинк на сервис есть

-3

а теперь проверим статус сервиса, команду уже знаем

sudo sv status sshd

сервис запущен, что бы остановить сервис сделует выполнить команду

sudo sv down sshd

ипосмотрим статус

sudo sv status sshd

как видим сервис остановлен, пробуем запустит

sudo sv up sshd

уже знаем как проверить статус

sudo sv status sshd
-4

Резюмируя данное повествование подведем итоги по командам

sudo ls -l /etc/sv/ - просмотр всех сервисов какие доступны в системе
sudo sv status /var/service/* - просмотр всех сервисов и их статусов
sudo ls -l /var/service/* - просмотр всех симлинков автозапуске
sudo ln -s /etc/sv/[имя сервиса] /var/service/ - добавление сервиса в автозапуск а так же управлять им с помощью команд ниже
sudo rm /var/service/[имя сервиса] - удаление симлинка сервиса из автозапуска
sudo sv status [имя сервиса] - статус сервиса
sudo sv up [имя сервиса] - запуск сервиса
sudo sv down [имя сервиса] - остановка сервиса

Данная система достаточно легка в понимании и в использовании.

За основу взято Void Linux Handbook, документация по runit, а так же собственная практика.
За сим откланиваюсь...