мениджър на услуги (), който се развива от разработчиците на дистрибуцията GNU Guix System като зависимост за поддръжка на алтернатива на системата за инициализация SysV-init. Управляващият демон и инструментите на Shepherd са написани на езика Guile (една от реализациите на Scheme), който също се използва за определяне на настройки и параметри за стартиране на услугите. Shepherd вече се използва в дистрибуцията GuixSD GNU/Linux и е насочен също така за употреба в GNU/Hurd, но може да работи в всяка ОС, съвместима с POSIX, за която е достъпен езикът Guile.
Shepherd може да се използва както като основна система за инициализация (init c PID 1), така и в отделен вид за управление на фонови процеси на отделни потребители (например, за стартиране на tor, privoxy, mcron и т.н.) с изпълнение с правата на съответните потребители. Shepherd изпълнява работата по стартиране и спиране на услуги, отчитайки взаимовръзките между тях и динамично определя и стартира услуги, от които зависи избраната услуга. Shepherd също така поддържа определяне на конфликти между услуги и предотвратява тяхното едновременно изпълнение.
Основни нововъведения:
- В make-kill-destructor е реализирано убиване на група процеси;
- Добавен е параметърът „default-pid-file-timeout“, който определя времето за изчакване за създаване на PID файл;
- Ако PID файлът не се появи в рамките на таймаута, осигурено е завършване на цялата група процеси (решава с оставяне на работните процеси без PID файл);
- В „make-forkexec-constructor“ е добавен параметърът „#:file-creation-mask“, реализирано е създаване на лог файлове и е прекратена поддръжката на старото споразумение за извиквания;
- Решени са проблемите с компилацията на системи без prctl, като GNU/Hurd;
- Отстранен е проблем, водещ до изпращане на SIGALRM всяка секунда.
Източник: opennet.ru
