Der Service-Manager GNU Shepherd 0.9.2 (ehemals dmd) wurde veröffentlicht. Er wird von den Entwicklern der Distribution GNU Guix System als Alternative zum Init-System SysV-init, das Abhängigkeiten unterstützt, entwickelt. Der Daemon und die Dienstprogramme von Shepherd sind in Guile (einer Implementierung der Sprache Scheme) geschrieben, die auch zur Definition der Einstellungen und Startparameter von Diensten verwendet wird. Shepherd wird bereits in der Distribution GuixSD GNU/Linux eingesetzt und zielt auch auf die Nutzung in GNU/Hurd ab, kann jedoch in jedem POSIX-kompatiblen Betriebssystem betrieben werden, für das die Sprache Guile verfügbar ist.
Shepherd verwaltet das Starten und Stoppen von Diensten, wobei die Abhängigkeiten zwischen den Diensten berücksichtigt werden. Es identifiziert und startet dynamisch die Dienste, von denen der gewählte Dienst abhängt. Shepherd unterstützt auch die Definition von Konflikten zwischen Diensten und verhindert deren gleichzeitige Ausführung. Das Projekt kann sowohl als primäres Init-System (init mit PID 1) als auch in isolierter Form zur Steuerung von Hintergrundprozessen einzelner Benutzer (z.B. zum Starten von tor, privoxy, mcron usw.) mit den Rechten dieser Benutzer verwendet werden.
Unter den Änderungen:
- Die von Shepherd verwendeten Dateideskriptoren werden jetzt mit dem O_CLOEXEC-Flag (close-on-exec) markiert und werden nicht sofort bei der Ausführung des «exec-command» geschlossen, was die Übertragung von Deskriptoren an Dienste ermöglicht, die nicht direkt, sondern über «exec-command» gestartet werden.
- Clientverbindungen werden jetzt im nicht-blockierenden Modus verarbeitet, was das Hängenbleiben von Shepherd bei der Übermittlung unvollständiger Befehle verhindert.
- Die Erstellung eines Verzeichnisses für die in der Einstellung «log-file» definierten Protokolldateien wird sichergestellt, falls diese nicht vorhanden sind.
Quelle: opennet.ru
