Опубліковано випуск сервісного менеджера 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 використовується в дистрибутивах Obarun, Adelie та Artix, а також опціонально може застосовуватись у Gentoo, Void та Alpine.
Проектом також розвиваються супутні пакети, що доповнюють 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.
Джерело: opennet.ru
