Es wurde eine bedeutende Version des Service-Managers s6-rc 0.5.3.0 vorbereitet, die fĂŒr die Verwaltung des Starts von Initialisierungsskripten und Diensten unter BerĂŒcksichtigung von AbhĂ€ngigkeiten bestimmt ist. Das Werkzeug s6-rc kann sowohl in Initialisierungssystemen als auch zur Organisation des Starts beliebiger Dienste in Bezug auf Ereignisse eingesetzt werden, die eine Ănderung des Systemzustands widerspiegeln. Es wird eine vollstĂ€ndige Verfolgung des AbhĂ€ngigkeitsbaums und ein automatischer Start oder Stopp von Diensten zur Erreichung des angegebenen Zustands bereitgestellt. Der Code ist in C geschrieben und unter der ISC-Lizenz lizenziert.
Der Service-Manager s6-rc, der als Pendant zu sysv-rc oder OpenRC betrachtet werden kann, umfasst eine Sammlung von Dienstprogrammen zum Starten und Stoppen von langlaufenden Prozessen (DĂ€chern) oder sofort beendbaren Initialisierungsskripten. Im Verlauf des Betriebs werden die AbhĂ€ngigkeiten zwischen den Komponenten berĂŒcksichtigt, der parallele Start nicht ĂŒberlappender Skripte und Dienste wird gewĂ€hrleistet, und es wird sichergestellt, dass die AusfĂŒhrungsreihenfolge der Skripte bei verschiedenen Starts gleich bleibt. Alle ZustandsĂ€nderungen werden unter BerĂŒcksichtigung der AbhĂ€ngigkeiten verarbeitet, wobei darauf geachtet wird, dass die AbhĂ€ngigkeiten nicht verletzt werden (zum Beispiel werden beim Start eines Dienstes automatisch die erforderlichen AbhĂ€ngigkeiten fĂŒr dessen Betrieb gestartet und beim Stoppen werden die abhĂ€ngigen Dienste ebenfalls gestoppt).
Anstelle von Runlevels in s6-rc wird ein universelleres Konzept von Bundles vorgeschlagen, das es ermöglicht, Dienste nach beliebigen Merkmalen und zu lösenden Aufgaben zu gruppieren. Um die Effizienz zu steigern, wird eine kompilierte AbhĂ€ngigkeitsdatenbank verwendet, die mit dem Tool s6-rc-compile auf der Grundlage des Inhalts von Verzeichnissen mit Dateien zum Starten/Stoppen von Diensten erstellt wird. FĂŒr die Analyse und Manipulation der Datenbank stehen die Werkzeuge 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.
Zu den Vorteilen von s6-rc gehört die kompakte Implementierung, die nichts ĂberflĂŒssiges enthĂ€lt, auĂer den Komponenten zur Lösung direkter Aufgaben, und die minimale Ressourcen verbraucht. Im Gegensatz zu anderen Service-Managern unterstĂŒtzt s6-rc die proaktive (im Offline-Modus) Erstellung eines AbhĂ€ngigkeitsgraphs fĂŒr die vorhandene Dienstmenge, was es ermöglicht, ressourcenintensive AbhĂ€ngigkeitsanalysen separat durchzufĂŒhren, anstatt wĂ€hrend des Ladens oder des Zustandswechsels. Dabei ist das System nicht monolithisch und in eine Reihe separater sowie austauschbarer Module unterteilt, von denen jedes gemÀà der Unix-Philosophie nur eine bestimmte Aufgabe löst.
In Kombination mit den s6-Dienstprogrammen, die die ProzessausfĂŒhrung ĂŒberwachen (Ă€hnlich wie daemontools und runit), ermöglicht das Toolkit die gleichzeitige Ăberwachung von lang laufenden Diensten, indem es sie beispielsweise bei unerwartetem Beenden neu startet, und sorgt fĂŒr den Start einer Folge von Befehlen in reproduzierbarer Form, die sich bei verschiedenen AusfĂŒhrungen wiederholt. UnterstĂŒtzt werden unter anderem Funktionen wie das Aktivieren eines Dienstes beim Zugriff auf einen Socket (AusfĂŒhrung eines Handlers beim Zugriff auf einen Netzwerkport), die Protokollierung von Prozessevents (Ersatz fĂŒr syslogd) und die kontrollierte Bereitstellung zusĂ€tzlicher Berechtigungen (Ă€hnlich wie sudo).
AuĂerdem steht die Veröffentlichung des Pakets s6-linux-init 1.0.7.0 zur VerfĂŒgung, das die Implementierung eines Init-Prozesses zur Erstellung von fertigen Init-Systemen fĂŒr Betriebssysteme auf Basis des Linux-Kernels bietet, in denen die s6- und s6-rc-Dienstprogramme zur Verwaltung von Diensten und Initiierungsskripten verwendet werden. Dabei sind s6 und s6-rc nicht an s6-linux-init gebunden und können bei Bedarf mit beliebigen Init-Systemen verwendet werden.
DarĂŒber hinaus bietet das Projekt Folgendes an:
- s6-networking â eine Sammlung von Dienstprogrammen zur Erstellung von Netzwerkdiensten, Ă€hnlich wie ucspi.
- s6-frontend â eine Schicht zur Wiederherstellung der FunktionalitĂ€t von daemontools und runit auf Basis von s6.
- s6-portable-utils â eine Sammlung typischer Unix-Dienstprogramme wie cut, chmod, ls, sort und grep, optimiert fĂŒr minimalen Ressourcenverbrauch und lizenztechnisch unter ISC bereitgestellt.
- s6-linux-utils â eine Sammlung von Dienstprogrammen, die auf Linux zugeschnitten sind, darunter chroot, freeramdisk, logwatch, mount und swapon.
- s6-dns â eine Sammlung von Client-Bibliotheken und Dienstprogrammen, die die typischen DNS-Dienstprogramme von BIND und djbdns ersetzen.
In der neuen Version von s6-rc wurde in der s6-rc-compile-Dienstprogrammfunktion das Lesen von AbhĂ€ngigkeitsdaten und Dienstmengen aus Verzeichnissen anstelle von Dateien implementiert. Die Verwendung von Verzeichnissen vereinfacht das HinzufĂŒgen von Diensten zur Datenbank mit AbhĂ€ngigkeitsinformationen beim Installieren von Programmen ĂŒber den Paketmanager, da Ănderungen an Dateien vermieden werden können. Die UnterstĂŒtzung des alten dateibasierten Formats bleibt erhalten, um die KompatibilitĂ€t zu gewĂ€hrleisten. In der neuen Version von s6-linux-init wurde die Option â-Sâ zum s6-linux-init-maker-Dienstprogramm hinzugefĂŒgt, um die Daten in Containern zu synchronisieren.
Quelle: opennet.ru
