È stato pubblicato il gestore di servizi GNU Shepherd 0.9.2 (precedentemente dmd), sviluppato dagli sviluppatori della distribuzione GNU Guix System come alternativa al sistema di inizializzazione SysV-init, supportando le dipendenze. Il demone di gestione e le utilità di Shepherd sono scritte in Guile (una delle implementazioni del linguaggio Scheme), anch'esso utilizzato per definire le impostazioni e i parametri di avvio dei servizi. Shepherd è già utilizzato nella distribuzione GuixSD GNU/Linux e mira anche a essere usato in GNU/Hurd, ma può funzionare su qualsiasi sistema operativo compatibile con POSIX, per il quale è disponibile il linguaggio Guile.
Shepherd si occupa dell'avvio e dell'arresto dei servizi, tenendo conto delle interconnessioni tra i servizi, determinando dinamicamente e avviando i servizi da cui dipende il servizio selezionato. Shepherd supporta anche la definizione di conflitti tra servizi e previene la loro esecuzione simultanea. Il progetto può essere utilizzato sia come sistema di init principale (init con PID 1), sia in modo isolato per gestire i processi in background di singoli utenti (ad esempio, per avviare tor, privoxy, mcron, ecc.) con esecuzione con i diritti di tali utenti.
Tra le modifiche:
- I descrittori di file utilizzati in Shepherd sono ora contrassegnati con il flag O_CLOEXEC (close-on-exec), e non vengono più chiusi immediatamente durante l'esecuzione del "exec-command", permettendo di passare i descrittori ai servizi avviati non direttamente, ma tramite "exec-command".
- Le connessioni client sono ora gestite in modalità non bloccante, il che evita che shepherd si blocchi durante l'invio di comandi incompleti.
- È garantita la creazione di una directory per i file di log definiti nell'impostazione "log-file", in caso non sia presente.
Fonte: opennet.ru
