Опубликован системный менеджер GNU Shepherd 1.0.0

Представлен системный менеджер GNU Shepherd 1.0.0 (бывший dmd), сочетающий возможности системы инициализации и инструментария для управления системными сервисами. Отмечается, что присвоение номера 1.0 после 21 года разработки ознаменовало признание готовности проекта и его соответствия требованиям к функциональности современных систем инициализации и сервисных менеджеров.

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

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

Основные новшества в GNU Shepherd 1.0.0:

  • Добавлена поддержка сервисов, периодически запускающих команды или код на языке Scheme по указанному расписанию.
  • В команде «herd status SERVICE» реализован показ высокоуровневой информации о сервисах, такой как PID, команда и адреса на которых принимаются сетевые запросы, а также сводки недавно добавленных в лог сообщений. Кроме того, данная команда теперь показывает применимые к сервису пользовательские действия и информирует о наличии заменяющего сервиса, который будет применён после перезапуска текущего сервиса.
  • Команда «herd status root» теперь не является синонимом «herd status» и отображает сведения о корневом процессе shepherd.
  • Для платформы Linux предоставлена возможность перезапуска с использованием механизма kexec («reboot —kexec») для замены ядра Linux без физической перезагрузки.
  • Добавлен сервис 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».

Источник: http://www.opennet.ru/opennews/art.shtml?num=62376