Публикуван е системният мениджър GNU Shepherd 0.9.2 (бивш dmd), който се развива от разработчиците на дистрибуцията GNU Guix System като алтернатива на системата за инициализация SysV-init, предоставяща поддръжка на зависимости. Управляващият демон и инструментите на Shepherd са написани на езика Guile (една от реализациите на езика Scheme), който също се използва за определяне на настройки и параметри за стартиране на услуги. Shepherd вече се използва в дистрибуцията GuixSD GNU/Linux и е насочен към употреба в GNU/Hurd, но може да работи и в всяка POSIX-совместима ОС, за която е наличен езика Guile.
Shepherd изпълнява действията по стартиране и спиране на услугите, отчитайки взаимовръзките между тях, динамично определя и стартира услугите, от които зависи избраната услуга. Shepherd също така поддържа определянето на конфликти между услугите и предотвратява тяхното едновременно изпълнение. Проектът може да се използва както в роля на основна система за инициализация (init c PID 1), така и в отделен вид за управление на фоновите процеси на отделни потребители (например, за стартиране на tor, privoxy, mcron и т.н.) с изпълнение с правата на съответните потребители.
Сред промените:
- Файловите дескриптори, използвани в Shepherd, сега се маркират с флага O_CLOEXEC (close-on-exec), а не се затварят веднага при изпълнение на „exec-command“, което позволява предаването на дескриптори на услуги, стартирани не директно, а чрез „exec-command“.
- Клиентските връзки сега се обработват в неблокиращ режим, което предотвратява зависването на shepherd при изпращането на непълна команда.
- Осигурено е създаването на директория за лог файлове, определени в настройката „log-file“, в случай че такава липсва.
Източник: opennet.ru
