manager di servizio (), che è sviluppato dagli sviluppatori della distribuzione GNU Guix System come dipendenza di supporto alternativa al sistema di inizializzazione SysV-init. Il demone di gestione e gli strumenti di Shepherd sono scritti in Guile (una delle implementazioni del linguaggio Scheme), che viene utilizzato anche per definire le configurazioni e i parametri di avvio dei servizi. Shepherd è già in uso nella distribuzione GuixSD GNU/Linux e punta anche a essere utilizzato in GNU/Hurd, ma può funzionare su qualsiasi sistema operativo compatibile con POSIX per cui è disponibile il linguaggio Guile.
Shepherd può essere utilizzato sia come sistema di inizializzazione principale (init con PID 1), sia in modo indipendente per gestire i processi in background di singoli utenti (ad esempio, per avviare tor, privoxy, mcron, ecc.) con i diritti di tali utenti. Shepherd si occupa di avviare e fermare i servizi, tenendo conto delle interdipendenze tra i servizi, determinando e avviando dinamicamente i servizi da cui dipende il servizio scelto. Shepherd supporta anche la definizione di conflitti tra i servizi e ne impedisce l'esecuzione simultanea.
Novità principali:
- In make-kill-destructor è stata implementata l'uccisione di un gruppo di processi;
- Aggiunto il parametro «default-pid-file-timeout», che definisce il tempo di attesa per la creazione del file PID;
- Se il file PID non appare entro il timeout, è garantita la terminazione dell'intero gruppo di processi (risolve lasciano i processi in esecuzione senza file PID);
- In make-forkexec-constructor è stato aggiunto il parametro «#:file-creation-mask», implementata la creazione di file di log e terminato il supporto per il vecchio accordo sulle chiamate;
- Risolti problemi di compilazione su sistemi senza prctl, come GNU/Hurd;
- Eliminato un difetto che portava all'invio di SIGALRM ogni secondo.
Fonte: opennet.ru
