Выпуск системы инициализации GNU Shepherd 0.6

Представлен сервисный менеджер GNU Shepherd 0.6 (бывший dmd), который развивается разработчиками дистрибутива GuixSD GNU/Linux в качестве поддерживающей зависимости альтернативы системе инициализации SysV-init. Управляющий демон и утилиты Shepherd написаны на языке Guile (одна из реализаций языка Scheme), который также используется для определения настроек и параметров запуска сервисов. Shepherd уже применяется в дистрибутиве GuixSD GNU/Linux и нацелен также на использование в GNU/Hurd, но может работать в любой POSIX-совместимой ОС, для которой доступен язык Guile.

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

Основные новшества:

  • Добавлен режим работы сервисов one-shot, при котором сервис сразу после успешного запуска помечается остановленным, что может потребоваться для запуска одноразовых работ перед другими сервисами, например, для выполнения чистки или инициализации;
  • Обеспечено удаление файлов с сокетами после завершения работы shepherd;
  • Команда «herd stop» теперь не выводит ошибку при выполнении над уже остановленным сервисом;
  • Утилита herd теперь возвращает ненулевой код возврата в случае сбоя запуска задачи;
  • В случае запуска в контейнере обеспечено игнорирования связанных с загрузкой ошибок.

© OpenNet