È stato presentato il gestore di sistema GNU Shepherd 1.0.0 (ex dmd), che combina le funzionalità di un sistema di inizializzazione e strumenti per la gestione dei servizi di sistema. Si segnala che l'assegnazione del numero 1.0 dopo 21 anni di sviluppo ha segnato il riconoscimento della prontezza del progetto e della sua conformità ai requisiti di funzionalità dei moderni sistemi di inizializzazione e gestori di servizi.
Il progetto è sviluppato dagli sviluppatori della distribuzione GNU Guix System come alternativa al sistema di inizializzazione SysV-init, che supporta le dipendenze. Il demone gestore e gli strumenti di Shepherd sono scritti nel linguaggio 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 GNU Guix System e mira a essere utilizzato anche in GNU/Hurd, ma può funzionare in qualsiasi sistema operativo conforme a POSIX per il quale è disponibile il linguaggio Guile.
Shepherd esegue il lavoro di avvio e arresto dei servizi, considerando le interconnessioni tra i servizi, determinando e avviando dinamicamente i servizi da cui dipende il servizio selezionato. Shepherd supporta anche la definizione dei conflitti tra servizi e ne impedisce l'esecuzione simultanea. Il progetto può essere utilizzato sia come sistema di inizializzazione principale (init con PID 1) che in modo autonomo per gestire i processi in background degli utenti individuali (ad esempio, per avviare tor, privoxy, mcron, ecc.) con l'esecuzione dei diritti di quegli utenti.
Le principali novità in GNU Shepherd 1.0.0:
- Aggiunta la supporto per i servizi che eseguono periodicamente comandi o codice in linguaggio Scheme secondo un programma specificato.
- Nel comando «herd status SERVICE» è stata implementata la visualizzazione di informazioni di alto livello sui servizi, come PID, comando e indirizzi su cui vengono ricevute le richieste di rete, oltre a un riepilogo dei messaggi recentemente aggiunti al log. Inoltre, questo comando ora mostra azioni personalizzate applicabili al servizio e informa sulla disponibilità di un servizio sostitutivo che verrà applicato dopo il riavvio del servizio corrente.
- Il comando «herd status root» non è più sinonimo di «herd status» e visualizza informazioni sul processo radice shepherd.
- Per la piattaforma Linux è stata fornita la possibilità di riavvio utilizzando il meccanismo kexec («reboot —kexec») per sostituire il kernel Linux senza riavvio fisico.
- È stato aggiunto il servizio log-rotation, responsabile della rotazione periodica dei log e della rimozione dei log obsoleti.
- È stato aggiunto il servizio system-log, che può essere utilizzato come sostituto del tradizionale sistema syslogd.
- È stato aggiunto il servizio timer per eseguire comandi a un orario specificato, in analogia con l'utilità «at». Ad esempio, «herd schedule timer at 07:00 — mpg123 alarm.mp3».
- È stato aggiunto il servizio transient per eseguire comandi in background, in analogia con l'utilità systemd-run. Ad esempio, «herd spawn transient -d $PWD — make -j4».
Fonte: opennet.ru
