Подготовлен значительный выпуск сервисного менеджера s6-rc 0.5.3.0, предназначенного для управления запуском скриптов инициализации и сервисов с учётом зависимостей. Инструментарий s6-rc может применяться как в системах инициализации, так и для организации запуска произвольных сервисов в привязке к событиям, отражающим изменение состояния системы. Предоставляется полное отслеживание дерева зависимостей и автоматический запуск или завершение сервисов для достижения указанного состояния. Код написан на языке Си и распространяется под лицензией ISC.
Сервисный менеджер s6-rc, который может рассматриваться как аналог sysv-rc или OpenRC, включает набор утилит для запуска и остановки длительно функционирующих процессов (демонов) или сразу завершаемых скриптов инициализации. В процессе работы учитываются зависимости между компонентами, обеспечивается параллельный запуск не пересекающихся между собой скриптов и сервисов, и гарантируется повторяющаяся при разных запусках последовательность выполнения скриптов. Все изменения состояния обрабатываются с учётом зависимостей, следя за тем, чтобы зависимости не нарушались (например, при запуске какого-то сервиса, будут автоматически запущены необходимые для его работы зависимости, а при остановке - остановлены и зависимые сервисы).
Вместо уровней запуска (runlevel) в s6-rc предлагается более универсальная концепция наборов (bundles), позволяющая группировать сервисы по произвольным признакам и решаемым задачам. Для повышения эффективности работы используется скомпилированная база зависимостей, создаваемая утилитой s6-rc-compile на основе содержимого каталогов с файлами для запуска/остановки сервисов. Для разбора и манипуляций с БД предлагаются утилиты s6-rc-db и s6-rc-update. Система поддерживает скрипты иницализации, совместимые с sysv-init, и может импортировать информацию о зависимостях из sysv-rc или OpenRC.
Из достоинств s6-rc называется компактная реализация, не содержащая ничего лишнего, кроме компонентов для решения прямых задач, и потребляющая минимум ресурсов. В отличие от других сервисных менеджеров s6-rc поддерживает упреждающее (в offline-режиме) построение графа зависимостей для имеющегося набора сервисов, что позволяет выполнить ресурсоёмкий анализ зависимостей отдельно, а не во время загрузки или изменения состояния. При этом система не является монолитной и разбита на серию отдельных и заменяемых модулей, каждый из которых в соответствии с философией Unix решает только определённую задачу.
В сочетании с утилитами s6, отслеживающими работу процессов (аналог daemontools и runit), инструментарий позволяет одновременно контролировать работу длительно выполняющихся сервисов, например, перезапуская их в случае аварийных завершений, и обеспечивать запуск последовательности команд в воспроизводимой форме, повторяющейся при разных запусках. Поддерживаются в том числе такие возможности как активация сервиса при доступе к сокету (запуск обработчика при обращении к сетевому порту), журналирование событий процесса (замена syslogd) и контролируемое предоставление дополнительных привилегий (аналог sudo).
Одновременно доступен выпуск пакета s6-linux-init 1.0.7.0, предлагающего реализацию init-процесса для построения готовых систем инициализации для операционных систем на базе ядра Linux, в которых для управления сервисами и скриптами инициализации используются утилиты s6 и s6-rc. При этом s6 и s6-rc не привязаны к s6-linux-init и при желании могут использоваться с любыми системами инициализации.
Кроме того проектом предоставляются:
Сервисный менеджер s6-rc, который может рассматриваться как аналог sysv-rc или OpenRC, включает набор утилит для запуска и остановки длительно функционирующих процессов (демонов) или сразу завершаемых скриптов инициализации. В процессе работы учитываются зависимости между компонентами, обеспечивается параллельный запуск не пересекающихся между собой скриптов и сервисов, и гарантируется повторяющаяся при разных запусках последовательность выполнения скриптов. Все изменения состояния обрабатываются с учётом зависимостей, следя за тем, чтобы зависимости не нарушались (например, при запуске какого-то сервиса, будут автоматически запущены необходимые для его работы зависимости, а при остановке - остановлены и зависимые сервисы).
Вместо уровней запуска (runlevel) в s6-rc предлагается более универсальная концепция наборов (bundles), позволяющая группировать сервисы по произвольным признакам и решаемым задачам. Для повышения эффективности работы используется скомпилированная база зависимостей, создаваемая утилитой s6-rc-compile на основе содержимого каталогов с файлами для запуска/остановки сервисов. Для разбора и манипуляций с БД предлагаются утилиты s6-rc-db и s6-rc-update. Система поддерживает скрипты иницализации, совместимые с sysv-init, и может импортировать информацию о зависимостях из sysv-rc или OpenRC.
Из достоинств s6-rc называется компактная реализация, не содержащая ничего лишнего, кроме компонентов для решения прямых задач, и потребляющая минимум ресурсов. В отличие от других сервисных менеджеров s6-rc поддерживает упреждающее (в offline-режиме) построение графа зависимостей для имеющегося набора сервисов, что позволяет выполнить ресурсоёмкий анализ зависимостей отдельно, а не во время загрузки или изменения состояния. При этом система не является монолитной и разбита на серию отдельных и заменяемых модулей, каждый из которых в соответствии с философией Unix решает только определённую задачу.
В сочетании с утилитами s6, отслеживающими работу процессов (аналог daemontools и runit), инструментарий позволяет одновременно контролировать работу длительно выполняющихся сервисов, например, перезапуская их в случае аварийных завершений, и обеспечивать запуск последовательности команд в воспроизводимой форме, повторяющейся при разных запусках. Поддерживаются в том числе такие возможности как активация сервиса при доступе к сокету (запуск обработчика при обращении к сетевому порту), журналирование событий процесса (замена syslogd) и контролируемое предоставление дополнительных привилегий (аналог sudo).
Одновременно доступен выпуск пакета s6-linux-init 1.0.7.0, предлагающего реализацию init-процесса для построения готовых систем инициализации для операционных систем на базе ядра Linux, в которых для управления сервисами и скриптами инициализации используются утилиты s6 и s6-rc. При этом s6 и s6-rc не привязаны к s6-linux-init и при желании могут использоваться с любыми системами инициализации.
Кроме того проектом предоставляются:
- 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.
- s6-dns - набор клиентских библиотек и утилит, заменяющих типовые DNS-утилиты из BIND и djbdns.