Dva roky po vytvorení posledného významného vydania bol publikovaný správca služieb GNU Shepherd 0.9 (predtým dmd), ktorý vyvíjajú vývojári distribúcie GNU Guix System ako alternatívu k inicializačnému systému SysV-init, ktorý podporuje závislosti. . Ovládací démon a utility Shepherd sú napísané v jazyku Guile (jedna z implementácií jazyka Scheme), ktorý sa používa aj na definovanie nastavení a parametrov spúšťania služieb. Shepherd sa už používa v distribúcii GuixSD GNU/Linux a je tiež zameraný na použitie v GNU/Hurd, ale môže bežať na akomkoľvek OS kompatibilnom s POSIX, pre ktorý je dostupný jazyk Guile.
Shepherd vykonáva prácu spúšťania a zastavovania služieb tak, že berie do úvahy vzťahy medzi službami, dynamicky identifikuje a spúšťa služby, na ktorých závisí vybraná služba. Shepherd tiež podporuje zisťovanie konfliktov medzi službami a predchádzanie ich súbežnému spusteniu. Projekt je možné použiť ako hlavný inicializačný systém (init s PID 1), tak aj v samostatnej forme na správu procesov na pozadí jednotlivých používateľov (napríklad spúšťať tor, privoxy, mcron a pod.) s vykonávaním s právami týchto používateľov.
Hlavné inovácie:
- Je implementovaný koncept dočasných služieb (prechodných), ktoré sa po dokončení automaticky deaktivujú v dôsledku ukončenia procesu alebo volania metódy „stop“, ktorá môže byť potrebná pre syntetizované služby, ktoré sa po vypnutí nedajú reštartovať.
- Na vytvorenie služieb podobných inetd bola pridaná procedúra „make-inetd-constructor“.
- Na vytvorenie služieb, ktoré sa aktivujú počas sieťovej aktivity (v štýle aktivácie soketu systemd), bola pridaná procedúra „make-systemd-constructor“.
- Pridaný postup na spustenie služby na pozadí – „štart-in-the-background“.
- Pridané parametre ":supplementary-groups", "#:create-session" a "#:resource-limits" do rutiny "make-forkexec-constructor".
- Povolená prevádzka bez blokovania počas čakania na súbory PID.
- Pre služby bez parametra „#:log-file“ sa poskytuje výstup do syslog a pre služby s parametrom #:log-file sa protokol zapisuje do samostatného súboru s uvedením času nahrávok. Protokoly z neprivilegovaného procesu pastiera sú uložené v adresári $XDG_DATA_DIR.
- Podpora pre budovanie pomocou Guile 2.0 bola ukončená. Problémy pri používaní Guile verzie 3.0.5-3.0.7 boli vyriešené.
- Teraz sa vyžaduje, aby fungovala knižnica Fibers 1.1.0 alebo novšia.
Zdroj: opennet.ru