Dva roky po vytvoření poslední významné verze byl publikován správce služeb GNU Shepherd 0.9 (dříve dmd), který je vyvíjen vývojáři distribuce GNU Guix System jako alternativa k inicializačnímu systému SysV-init, který podporuje závislosti. . Ovládací démon Shepherd a obslužné programy jsou napsány v jazyce Guile (jedna z implementací jazyka Scheme), který se také používá k definování nastavení a parametrů pro spouštění služeb. Shepherd se již používá v distribuci GuixSD GNU/Linux a je také zaměřen na použití v GNU/Hurd, ale může běžet na jakémkoli OS kompatibilním s POSIX, pro který je k dispozici jazyk Guile.
Shepherd provádí práci při spouštění a zastavování služeb tím, že bere v úvahu vztahy mezi službami, dynamicky identifikuje a spouští služby, na kterých vybraná služba závisí. Shepherd také podporuje detekci konfliktů mezi službami a zabránění jejich souběžnému spuštění. Projekt lze použít jak jako hlavní inicializační systém (init s PID 1), tak v samostatné podobě pro správu procesů na pozadí jednotlivých uživatelů (například pro spouštění tor, privoxy, mcron atd.) s prováděním s právy těchto uživatelů.
Hlavní inovace:
- Je implementován koncept dočasných služeb (přechodných), které se po dokončení automaticky deaktivují z důvodu ukončení procesu nebo volání metody „stop“, což může být vyžadováno pro syntetizované služby, které nelze po vypnutí restartovat.
- Pro vytváření služeb podobných inetd byla přidána procedura „make-inetd-constructor“.
- Pro vytvoření služeb, které se aktivují během síťové aktivity (ve stylu aktivace soketu systemd), byla přidána procedura „make-systemd-constructor“.
- Přidán postup pro spuštění služby na pozadí – „start-in-the-background“.
- Do rutiny "make-forkexec-constructor" byly přidány parametry ":supplementary-groups", "#:create-session" a "#:resource-limits".
- Povolen provoz bez blokování při čekání na soubory PID.
- U služeb bez parametru „#:log-file“ je poskytován výstup do syslog a u služeb s parametrem #:log-file se protokol zapisuje do samostatného souboru s uvedením času nahrávek. Protokoly z neprivilegovaného procesu shepherd jsou uloženy v adresáři $XDG_DATA_DIR.
- Podpora pro vytváření pomocí Guile 2.0 byla ukončena. Problémy při používání Guile verze 3.0.5-3.0.7 byly vyřešeny.
- Nyní je vyžadována knihovna Fibers 1.1.0 nebo novější.
Zdroj: opennet.ru