service manager (), dat ontwikkeld wordt door de ontwikkelaars van de GNU Guix System distributie als een ondersteunende afhankelijkheid van het alternatif voor het SysV-init systeem. De beheerdemon en de utils van Shepherd zijn geschreven in Guile (een van de implementaties van de Scheme-taal), die ook wordt gebruikt voor het definiƫren van instellingen en opstartparameters voor diensten. Shepherd wordt al gebruikt in de GuixSD GNU/Linux distributie en is ook bedoeld voor gebruik in GNU/Hurd, maar kan werken op elke POSIX-compatibele OS waarvoor Guile beschikbaar is.
Shepherd kan zowel fungeren als het primaire init-systeem (init met PID 1) alsook in een afzonderlijke modus voor het beheren van achtergrondprocessen van individuele gebruikers (bijvoorbeeld voor het starten van tor, privoxy, mcron, enz.) met uitvoeringen met de rechten van deze gebruikers. Shepherd voert het starten en stoppen van services uit, rekening houdend met onderlinge afhankelijkheden tussen services, en bepaalt en start dynamisch services waarop de gekozen service afhankelijk is. Shepherd ondersteunt ook het definiƫren van conflicten tussen services en voorkomt hun gelijktijdige uitvoering.
Belangrijkste vernieuwingen:
- In make-kill-destructor is het beëindigen van een groep processen geïmplementeerd;
- De parameter 'default-pid-file-timeout' is toegevoegd, die de wachttijd voor het maken van een PID-bestand bepaalt;
- Als het PID-bestand niet binnen de time-out verschijnt, wordt de hele groep processen beƫindigd (lost op zonder werkprocessen zonder PID-bestand);
- De parameter '#:file-creation-mask' is toegevoegd aan 'make-forkexec-constructor', logbestanden worden aangemaakt en de oude oproepovereenkomst is niet langer ondersteund;
- Problemen met compilatie op systemen zonder prctl, zoals GNU/Hurd, zijn opgelost;
- Een tekortkoming is verholpen die leidde tot het verzenden van SIGALRM elke seconde.
Bron: opennet.ru
