Добавить в корзинуПозвонить
Найти в Дзене
Новости linux

GNU Shepherd 1.0.0: Эволюция системного менеджера после 21 года разработки

9 декабря 2024 года состоялся долгожданный релиз системного менеджера GNU Shepherd версии 1.0.0, ранее известного как dmd. Этот проект, развивающийся на протяжении более двух десятилетий, представляет собой мощную комбинацию возможностей системы инициализации и инструмента для управления системными сервисами. Команда разработчиков официально признала готовность проекта и соответствие его функционала современным стандартам систем инициализации и сервисных менеджеров. Shepherd, созданный командой дистрибутива GNU Guix System, призван заменить традиционную систему инициализации SysV-init, обеспечивая поддержку зависимостей между сервисами. Основной управляющий демон и утилиты Shepherd разработаны на языке программирования Guile (реализация языка Scheme), который также используется для настройки и конфигурации сервисов. В настоящее время решение успешно интегрировано в дистрибутив GNU Guix System и активно тестируется для использования в операционной системе GNU/Hurd, однако оно совместимо
GNU Shepherd 1.0.0: Эволюция системного менеджера после 21 года разработки
GNU Shepherd 1.0.0: Эволюция системного менеджера после 21 года разработки

9 декабря 2024 года состоялся долгожданный релиз системного менеджера GNU Shepherd версии 1.0.0, ранее известного как dmd. Этот проект, развивающийся на протяжении более двух десятилетий, представляет собой мощную комбинацию возможностей системы инициализации и инструмента для управления системными сервисами. Команда разработчиков официально признала готовность проекта и соответствие его функционала современным стандартам систем инициализации и сервисных менеджеров.

Shepherd, созданный командой дистрибутива GNU Guix System, призван заменить традиционную систему инициализации SysV-init, обеспечивая поддержку зависимостей между сервисами. Основной управляющий демон и утилиты Shepherd разработаны на языке программирования Guile (реализация языка Scheme), который также используется для настройки и конфигурации сервисов. В настоящее время решение успешно интегрировано в дистрибутив GNU Guix System и активно тестируется для использования в операционной системе GNU/Hurd, однако оно совместимо с любыми POSIX-совместимыми операционными системами при условии наличия среды выполнения Guile.

Основные функции Shepherd включают управление запуском и остановкой сервисов, отслеживание их взаимозависимости и автоматический запуск необходимых компонентов. Система способна определять конфликты между сервисами и предотвращать их параллельное выполнение. Она может функционировать как полноценная система инициализации (PID 1), так и отдельно управлять фоном процессов конкретных пользователей, например, для запуска таких приложений, как Tor, Privoxy, Mcron и других.

Среди ключевых нововведений версии 1.0.0 выделяются следующие улучшения:

  • Добавление поддержки сервисов, способных выполнять команды или код на языке Scheme по заданному расписанию.
  • Обновлённая команда "herd status SERVICE", которая теперь предоставляет расширенную информацию о сервисе, включая его PID, команду и сетевые адреса, а также последние сообщения журнала. Также она уведомляет об имеющихся действиях, связанных с сервисом, и предупреждает о замене сервиса при его перезапуске.
  • Улучшенная команда "herd status root", предоставляющая данные о корневом процессе shepherd.
  • Для платформы Linux реализована функция перезапуска через механизм kexec ("reboot --kexec"), позволяющая сменить ядро без необходимости полной перезагрузки системы.
  • Появился новый сервис log-rotation для автоматической ротации журналов и удаления старых записей.
  • Сервис system-log стал доступной заменой классической системы syslogd.
  • Новый сервис timer позволяет планировать выполнение задач в определённое время, подобно утилите "at". Например, "herd schedule timer at 07:00 -- mpg123 alarm.mp3".
  • Сервис transient предназначен для запуска команд в фоновом режиме, аналогичный по функциональности утилите systemd-run. Например, "herd spawn transient -d $PWD -- make -j4".

Разработчики продолжают совершенствовать проект, планируя реализовать такие важные функции, как динамическая реконфигурация служб, интеграция с контрольными группами (cgroups) в Linux и улучшение взаимодействия с приостановленными программами. В будущем команда видит потенциал в создании распределённой и функциональной версии Shepherd, возможно, используя фреймворк Spritely Goblins, что станет следующим шагом в эволюции этого уникального решения.

Таким образом, релиз GNU Shepherd 1.0.0 знаменует важный этап в развитии системных инструментов, предлагая пользователям гибкое и современное средство для управления сервисами в различных операционных системах.