Выпуск системы инициализации GNU Shepherd 0.5
Увидел свет сервисный менеджер GNU Shepherd 0.5 (бывший dmd), который развивается разработчиками дистрибутива GuixSD GNU/Linux в качестве альтернативы системы инициализации SysV-init с поддержкой зависимостей. Управляющий демон и утилиты Shepherd написаны на языке Guile (одна из реализаций языка Scheme), который также используется для определения настроек и параметров запуска сервисов.
Shepherd может использоваться как основная система инициализации (init c PID 1), так и в обособленном виде для управления фоновыми процессами отдельных пользователей (например, для запуска tor, privoxy, mcron и т. п.), запускаемая с правами данных пользователей. Shepherd выполняет работу по запуску и остановке сервисов, учитывая взаимосвязь между сервисами, динамически определяя и запуская сервисы, от которых зависит выбранный сервис.
Shepherd также поддерживает определение конфликтов между сервисами и предотвращает их одновременное выполнение. Shepherd уже применяется в дистрибутиве GuixSD GNU/Linux и нацелен также на использование в GNU/Hurd, но может работать в любой POSIX-совместимой ОС, для которой доступен язык Guile.
Основные новшества:
- Добавлена возможность определения замены сервисов;
- При перезапуске сервиса теперь перезапускаются и все зависимые от него сервисы;
- Добавлен режим мягкого завершения работы (gracefull) при нажатии ctrl-alt-del (работает только при запуске как PID 1 в GNU/Linux);
- Действия теперь могут вызываться для сервисов, не запущенных в текущий момент;
- Добавлена поддержка Guile 3.0. Для работы теперь требуется как минимум Guile 2.0.13;
- Удален неиспользуемый код с реализацией уровней запуска (runlevel).