Der Systemmanager GNU Shepherd 1.0.0 (ehemals dmd) wurde eingeführt und kombiniert die Funktionen eines Init-Systems mit Werkzeugen zur Verwaltung von Systemdiensten. Die Vergabe der Versionsnummer 1.0 nach 21 Jahren Entwicklung markiert die Anerkennung der Projektreife und die Erfüllung der Anforderungen an die Funktionalität moderner Init-Systeme und Dienstmanager.
Das Projekt wird von den Entwicklern der GNU Guix System-Distribution weiterentwickelt und bietet eine Alternative zum SysV-init-System, das Abhängigkeiten unterstützt. Der verwaltende Daemon und die Tools von Shepherd sind in Guile (einer Implementierung der Programmiersprache Scheme) geschrieben, die auch zur Definition von Einstellungen und Startparametern für Dienste verwendet wird. Shepherd wird bereits in der GNU Guix System-Distribution eingesetzt und zielt auch auf die Verwendung in GNU/Hurd ab, kann jedoch in jedem POSIX-kompatiblen Betriebssystem betrieben werden, für das die Guile-Sprache verfügbar ist.
Shepherd übernimmt das Starten und Stoppen von Diensten, wobei die Abhängigkeiten zwischen den Diensten berücksichtigt werden. Er ermittelt dynamisch die Dienste, von denen der gewählte Dienst abhängt, und startet sie. Außerdem unterstützt Shepherd die Identifizierung 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 isoliert verwendet werden, um Hintergrundprozesse für einzelne Benutzer zu verwalten (z. B. für das Starten von tor, privoxy, mcron usw.) mit den Rechten der jeweiligen Benutzer.
Die wichtigsten Neuerungen in GNU Shepherd 1.0.0:
- Unterstützung für Dienste, die Befehle oder Code in Scheme regelmäßig gemäß einem festgelegten Zeitplan ausführen.
- Im Befehl „herd status SERVICE“ wird nun eine hochgradige Übersicht über die Dienste angezeigt, einschließlich PID, Befehl und Adressen, an denen Netzwerkfragen entgegengenommen werden, sowie Zusammenfassungen neuer Protokollnachrichten. Darüber hinaus zeigt dieser Befehl jetzt anwendbare benutzerdefinierte Aktionen für den Dienst an und informiert über das Vorhandensein eines Ersatzdienstes, der nach dem Neustart des aktuellen Dienstes verwendet wird.
- Der Befehl „herd status root“ ist jetzt kein Synonym mehr für „herd status“ und zeigt Informationen über den Root-Prozess shepherd an.
- Für die Linux-Plattform besteht die Möglichkeit, mit dem kexec-Mechanismus („reboot —kexec“) neu zu starten, um den Linux-Kernel ohne physisches Neustarten zu ersetzen.
- Ein Dienst zur Protokollrotation wurde hinzugefügt, der für die regelmäßige Rotation von Protokollen und die Löschung veralteter Protokolle verantwortlich ist.
- Ein Dienst system-log wurde hinzugefügt, der als Ersatz für das traditionelle System syslogd verwendet werden kann.
- Ein Dienst timer wurde hinzugefügt, um Befehle zu einem festgelegten Zeitpunkt zu planen, ähnlich wie das Dienstprogramm „at“. Zum Beispiel: „herd schedule timer at 07:00 — mpg123 alarm.mp3“.
- Ein Dienst transient wurde hinzugefügt, um Befehle im Hintergrund auszuführen, ähnlich wie das Dienstprogramm systemd-run. Zum Beispiel: „herd spawn transient -d $PWD — make -j4“.
Quelle: opennet.ru
