Ein umfangreiches Update des Service-Managers s6-rc 0.5.3.0 wurde veröffentlicht, das zur Verwaltung des Starts von Initialisierungsskripten und Diensten unter Berücksichtigung von Abhängigkeiten dient. Das Tool s6-rc kann sowohl in Initialisierungssystemen als auch zur Organisation des Starts beliebiger Dienste in Verbindung mit Ereignissen eingesetzt werden, die einen Zustandswechsel des Systems widerspiegeln. Es bietet eine vollständige Nachverfolgung des Abhängigkeitsbaums sowie den automatischen Start oder Stopp von Diensten, um den angegebenen Zustand zu erreichen. Der Code ist in C geschrieben und wird unter der ISC-Lizenz verbreitet.
Der Service-Manager s6-rc, der als Pendant zu sysv-rc oder OpenRC betrachtet werden kann, umfasst eine Sammlung von Utilities zum Starten und Stoppen von lang laufenden Prozessen (Dämonen) oder sofort zu beendenden Initialisierungsskripten. Während des Betriebs werden Abhängigkeiten zwischen den Komponenten berücksichtigt, es erfolgt ein paralleler Start von sich nicht überschneidenden Skripten und Diensten, und die Ausführungsreihenfolge der Skripte wird bei verschiedenen Starts gewährleistet. Alle Zustandsänderungen werden unter Berücksichtigung der Abhängigkeiten verarbeitet, wobei darauf geachtet wird, dass diese nicht verletzt werden (zum Beispiel werden bei der Aktivierung eines Dienstes automatisch die notwendigen Abhängigkeiten gestartet, und bei deren Deaktivierung werden auch die abhängigen Dienste gestoppt).
Anstelle der Startstufen (runlevel) bietet s6-rc ein flexibleres Konzept von Bündeln (bundles), das es ermöglicht, Dienste nach beliebigen Kriterien und spezifischen Aufgaben zu gruppieren. Um die Effizienz zu steigern, wird eine kompilierte Abhängigkeitsdatenbank verwendet, die mit dem Tool s6-rc-compile aus dem Inhalt der Verzeichnisse für das Starten/Stoppen der Dienste erstellt wird. Für die Analyse und Manipulation der Datenbank stehen die Tools s6-rc-db und s6-rc-update zur Verfügung. Das System unterstützt Initialisierungsskripte, die mit sysv-init kompatibel sind, und kann Abhängigkeitsinformationen aus sysv-rc oder OpenRC importieren.
Ein Vorteil von s6-rc ist seine kompakte Umsetzung, die nichts Überflüssiges enthält, außer den Komponenten zur Lösung direkter Aufgaben und minimalen Ressourcenverbrauch benötigt. Im Gegensatz zu anderen Service-Managern unterstützt s6-rc die proaktive (im Offline-Modus) Erstellung eines Abhängigkeitsgraphen für die vorhandenen Services, was die ressourcenintensive Analyse der Abhängigkeiten getrennt ermöglicht und nicht während des Ladens oder beim Ändern des Status. Dabei ist das System nicht monolithisch, sondern in eine Reihe von separaten und austauschbaren Modulen unterteilt, die jeweils gemäß der Unix-Philosophie nur eine bestimmte Aufgabe lösen.
In Kombination mit den s6-Dienstprogrammen, die die Prozessausführung überwachen (vergleichbar mit Daemontools und Runit), ermöglicht es das Toolkit, lang laufende Dienste zu überwachen, indem es sie im Falle von Abstürzen neu startet und Befehlssequenzen in reproduzierbarer Form auszuführen, die bei verschiedenen Starts wiederholt werden. Es unterstützt unter anderem Funktionen wie die Aktivierung eines Dienstes beim Zugriff auf den Socket (Start des Handlers bei Anforderung an den Netzwerkport), Protokollierung von Prozessereignissen (Ersatz von Syslogd) und kontrollierte Bereitstellung zusätzlicher Berechtigungen (vergleichbar mit Sudo).
Gleichzeitig steht das Paket s6-linux-init 1.0.7.0 zur Verfügung, das eine Implementierung des Init-Prozesses für den Aufbau fertiger Initialisierungssysteme für Betriebssysteme auf Basis des Linux-Kernels anbietet, bei denen die Dienst- und Initialisierungsskripte mithilfe der s6- und s6-rc-Dienstprogramme verwaltet werden. Dabei sind s6 und s6-rc nicht an s6-linux-init gebunden und können nach Belieben mit beliebigen Initialisierungssystemen verwendet werden.
Zusätzlich bietet das Projekt Folgendes an:
- s6-networking — eine Sammlung von Tools zur Erstellung von Netzwerkdiensten, ähnlich wie ucspi.
- s6-frontend — ein Wrapper zur Wiederherstellung der Funktionalität von daemontools und runit über s6.
- s6-portable-utils — eine Sammlung von typischen Unix-Tools wie cut, chmod, ls, sort und grep, optimiert für minimalen Ressourcenverbrauch und unter der ISC-Lizenz bereitgestellt.
- s6-linux-utils — eine Sammlung von Linux-spezifischen Tools wie chroot, freeramdisk, logwatch, mount und swapon.
- s6-dns — ein Satz von Client-Bibliotheken und -Tools, die die typischen DNS-Tools von BIND und djbdns ersetzen.
In der neuen Version von s6-rc wurde in der s6-rc-compile-Funktion die Möglichkeit implementiert, Abhängigkeitsdaten und Servicemanagement-Sets aus Verzeichnissen statt aus Dateien zu lesen. Die Nutzung von Verzeichnissen erleichtert das Hinzufügen von Services zur DB mit Abhängigkeitsinformationen, wenn Programme über den Paketmanager installiert werden, da keine Änderungen an Dateien erforderlich sind. Die Unterstützung des alten dateibasierten Formats bleibt bestehen, um die Kompatibilität zu gewährleisten. In der neuen Version von s6-linux-init wurde der Option „-S“ in der s6-linux-init-maker-Funktion hinzugefügt, um Daten in Containern zu synchronisieren.
Quelle: opennet.ru
