Выпуск сервисного менеджера s6-rc 0.7
Опубликован выпуск сервисного менеджера s6-rc 0.7.0.0, предназначенного для управления запуском скриптов инициализации и сервисов. Поддерживается отслеживание дерева зависимостей и автоматический запуск или завершение сервисов для достижения указанного состояния. Инструментарий s6-rc может применяться как в системах инициализации, так и для организации запуска произвольных сервисов в привязке к событиям, отражающим изменение состояния системы. Система поддерживает скрипты инициализации, совместимые с sysv-init, и может импортировать информацию о зависимостях из sysv-rc или OpenRC. Код написан на языке Си и распространяется под лицензией ISC.
Сервисный менеджер s6-rc включает набор утилит для запуска и остановки длительно функционирующих процессов (демонов) или сразу завершаемых скриптов инициализации. В процессе работы обеспечивается параллельный запуск не пересекающихся между собой сервисов и гарантируется повторяющаяся при разных запусках последовательность выполнения скриптов. Все изменения состояния обрабатываются с учётом зависимостей, например, при запуске какого-то сервиса будут автоматически запущены необходимые для его работы зависимости, а при остановке — остановлены и зависимые сервисы.
В отличие от других сервисных менеджеров s6-rc поддерживает упреждающее (в offline-режиме) построение графа зависимостей для имеющегося набора сервисов, что позволяет выполнить ресурсоёмкий анализ зависимостей отдельно, а не во время загрузки или изменения состояния. При этом система не является монолитной и разбита на серию отдельных и заменяемых модулей, каждый из которых в соответствии с философией Unix решает только определённую задачу. Проект s6-rc придерживается философии минимализма (не содержит ничего лишнего) и потребляет минимум ресурсов.
Вместо уровней запуска (runlevel) в s6-rc предлагается концепция наборов (bundles), позволяющая группировать сервисы по произвольным признакам и решаемым задачам. Для повышения эффективности работы используется скомпилированная БД зависимостей, создаваемая утилитой s6-rc-compile на основе содержимого каталогов с файлами для запуска/остановки сервисов. Для разбора и манипуляций с БД предлагаются утилиты s6-rc-db и s6-rc-update.
Проектом также развиваются сопутствующие пакеты, дополняющие s6-rc:
s6 — утилиты для отслеживания работы процессов и управления процессами (аналог daemontools и runit). Поддерживаются такие возможности как перезапуск процессов после их аварийного завершения, запуск обработчика (активация сервиса) при обращении к сетевому порту, журналирование событий (замена syslogd) и контролируемое предоставление дополнительных привилегий (аналог sudo).
s6-linux-init — реализация init-процесса для операционных систем на базе ядра Linux, применяемого для создания систем инициализации, в которых для управления сервисами и скриптами используются пакеты s6 и s6-rc.
- s6-networking — набор утилит для создания сетевых сервисов, похожий на ucspi.
- s6-frontend — обвязка для воссоздания функциональности daemontools и runit поверх s6.
- s6-portable-utils — набор типовых Unix-утилит, таких как cut, chmod, ls, sort и grep, оптимизированных для потребления минимальных ресурсов и поставляемых под лицензией ISC.
s6-linux-utils — набор утилит, привязанных к Linux, таких как chroot, freeramdisk, logwatch, mount и swapon.
- mdevd — менеджер событий (аналог udevd), предназначенный для обработки горячего подключения устройств. По конфигурации mdevd совместим с mdev из состава Busybox.
bcnm — сетевой конфигуратор с возможностями для настройки Wi-Fi на стороне клиента.
- execline — язык написания сценариев.
skalibs — библиотека для создания безопасных системных приложений на языке Си.
- s6-dns — набор клиентских библиотек и утилит, заменяющих типовые DNS-утилиты из BIND и djbdns.
dnsfunnel — перенаправляет локальные DNS-запросы на внешний сервер (DNS forwarder).
- shibari — простой DNS-сервер.
tipidee — HTTP-сервер с поддержкой HTTP/1.1.
В новой версии s6-rc и связанных с ним утилитах:
- Реализована команда «s6-rc reload» для перезапуска длительно работающих сервисов.
- Добавлен управляющий файл reload-signal, определяющий сигнал, отправляемый процессу для перезапуска (по умолчанию SIGHUP).
Удалена утилита s6-rc-bundle — изменение bundle-наборов без перекомпиляции больше не поддерживается.
Предложен новый формат внутренней БД (для обновления требуется перекомпиляция и запуск утилиты s6-rc-format-upgrade.
- Обеспечена корректная обработка ситуации повторного запуска утилиты s6-rc-init для инициализации сервисов и улучшена обработка системных сбоев.
- В утилиту s6-rc-set-change добавлены опции: -I/-i для вывода предупреждения или завершения с ошибкой при обнаружении конфликтующей зависимости; -P/-p для отключения/включения автоматического разрешения конфликтов зависимостей при изменении состояния сервисов.
- Удалена устаревшая опция »-f».
В утилиту s6 добавлена команда s6-svscanboot для перенаправления логов супервизора s6-svscan в s6-log, когда он выполняется не под PID 1.
Реализована опция «s6-svc -l» для отправки сигнала для перезапуска.
В интерфейс пользователя s6-frontend добавлена поддержка опций и команд «s6 --user» для работы с пользовательскими сервисами, «s6 live reset», «s6 apply», «s6 enable|disable|start|stop|kill|apply», «s6 live stop --clean».
В http-сервере tipidee реализована поддержка FastCGI и добавлена опция cgi_pass_authorization.
Источник: http://www.opennet.ru/opennews/art.shtml? num=65905
© OpenNet
