A disposizione responsabile del servizio GNU Pastore 0.8 (ex dm), sviluppato dagli sviluppatori della distribuzione GNU Guix System come alternativa sensibile alle dipendenze al sistema di inizializzazione SysV-init. Il demone di controllo Shepherd e le utilità sono scritti nel linguaggio Guile (una delle implementazioni del linguaggio Scheme), che viene utilizzato anche per definire impostazioni e parametri per l'avvio dei servizi. Shepherd è già utilizzato nella distribuzione GuixSD GNU/Linux ed è pensato anche per l'uso in GNU/Hurd, ma può essere eseguito su qualsiasi sistema operativo compatibile con POSIX per il quale è disponibile il linguaggio Guile.
Shepherd può essere utilizzato sia come sistema di inizializzazione principale (init con PID 1), sia in forma separata per gestire i processi in background dei singoli utenti (ad esempio, per eseguire tor, privoxy, mcron, ecc.) con esecuzione con i diritti di questi utenti. Shepherd svolge il lavoro di avvio e arresto dei servizi tenendo conto delle relazioni tra i servizi, identificando e avviando dinamicamente i servizi da cui dipende il servizio selezionato. Shepherd supporta inoltre il rilevamento dei conflitti tra i servizi e la prevenzione dell'esecuzione simultanea.
Principali innovazioni:
Make-kill-destructor implementa l'uccisione di un gruppo di processi;
Aggiunto parametro “default-pid-file-timeout”, che determina il tempo di attesa per la creazione di un file PID;
Se il file PID non viene visualizzato entro il timeout, l'intero gruppo di processi viene terminato (decide il problema lasciare i processi di lavoro senza file PID);
Aggiunto il parametro "#:file-creation-mask" a "make-forkexec-constructor", implementata la creazione del file di registro e smesso di supportare la vecchia convenzione di chiamata;
Risolti problemi con la compilazione su sistemi senza prctl, come GNU/Hurd;
Risolto un problema che causava l'invio di SIGALRM ogni secondo.