Випуск системи ініціалізації GNU Shepherd 0.9

Через два роки з моменту формування минулого значного випуску опубліковано сервісного менеджера GNU Shepherd 0.9 (колишній dmd), який розвивається розробниками дистрибутива GNU Guix System як альтернатива системі ініціалізації SysV-init, що підтримує залежності. Керуючий демон та утиліти Shepherd написані мовою Guile (одна з реалізацій мови Scheme), яка також використовується для визначення налаштувань та параметрів запуску сервісів. Shepherd вже застосовується в дистрибутиві GuixSD GNU/Linux і націлений також на використання в GNU/Hurd, але може працювати в будь-якій POSIX-сумісній ОС, для якої доступна мова Guile.

Shepherd виконує роботу із запуску та зупинки сервісів, враховуючи взаємозв'язок між сервісами, динамічно визначаючи та запускаючи сервіси, від яких залежить обраний сервіс. Shepherd також підтримує визначення конфліктів між сервісами та запобігає їх одночасному виконанню. Проект може використовуватися як у ролі основної системи ініціалізації (init c PID 1), так і в відокремленому вигляді для керування фоновими процесами окремих користувачів (наприклад, для запуску tor, privoxy, mcron тощо) з виконанням прав користувачів.

Основні нововведення:

  • Реалізовано концепцію тимчасових сервісів (transient), що автоматично відключаються після завершення через припинення роботи процесу або виклик методу «stop», що може знадобитися для синтезованих сервісів, які не можуть бути перезапущені після завершення роботи.
  • Для створення inetd-подібних сервісів додано процедуру make-inetd-constructor.
  • Для створення сервісів, що активуються при мережній активності (в стилі systemd socket activation), додано процедуру make-systemd-constructor.
  • Додана процедура для запуску сервісу у фоновому режимі - start-in-the-background.
  • У процедуру make-forkexec-constructor додані параметри: :supplementary-groups, #:create-session і #:resource-limits.
  • Забезпечено роботу без блокування під час очікування PID-файлів.
  • Для сервісів без параметра «#: log-file» забезпечено виведення в syslog, а для сервісів з параметром «: log-file» - запис лога в окремий файл із зазначенням часу записів. Логи від непривілейованого процесу shepherd зберігаються у каталозі $XDG_DATA_DIR.
  • Припинено підтримку збірки з Guile 2.0. Вирішено проблеми при використанні версій Guile 3.0.5-3.0.7.
  • Для роботи тепер потрібна бібліотека Fibers 1.1.0 або новіша версія.

Джерело: opennet.ru

Додати коментар або відгук