Systemd ist der von vielen aktuellen Linux-Distributionen verwendete init- und Dienstmanager mit PID 1. Das systemd-Projekt stellt außerdem Komponenten für Protokollierung, Geräte, Anmeldungen, Netzwerk, Zeit und weitere Bereiche bereit, doch Distributionen können auswählen, welche Teile sie einsetzen.
Init · Lektion 5
Überblick über systemd
Erfahre, wie systemd Units lädt, Abhängigkeiten auflöst, Targets aktiviert und System- sowie Benutzerressourcen verwaltet.
Den laufenden Manager bestätigen
Untersuche den aktuellen Zustand statt nur das Vorhandensein installierter Verzeichnisse:
$ ps -p 1 -o pid,comm,args=
$ systemctl is-system-running
/usr/lib/systemd/ kann auf einem System vorhanden sein, auf dem ein anderes Programm PID 1 ist, und ein Container kann seinen eigenen PID-Namensraum bereitstellen. systemctl besitzt außerdem Modi für Benutzermanager sowie entfernte Systeme und Container. Stelle deshalb fest, an welchen Manager sich eine Operation richtet.
Woran lässt sich systemd am unmittelbarsten als init-Manager des Systems erkennen?
Units als verwaltete Objekte
Eine Unit ist das benannte Modell von systemd für eine Ressource oder Aktivität. Häufige Unit-Typen sind:
.servicefür Prozesse und Daemons.socketfür Socket-Aktivierung.mountund.automountfür Dateisysteme.timerund.pathfür ereignisgesteuerte Aktivierung.targetfür Gruppierung und Synchronisierung.device,.swap,.sliceund.scopefür weitere verwaltete Ressourcen
Der Zustand einer Unit ist nicht immer „running“. Ein Mount kann eingehängt sein, ein Timer warten, ein Gerät vorhanden und ein Target aktiv sein, nachdem seine Abhängigkeiten erreicht wurden.
Welcher Unit-Typ gruppiert üblicherweise andere Units und stellt einen Synchronisierungspunkt bereit?
Ladepfade und Überschreibungen für Units
System-Units können aus Distributions- und Administratorpfaden geladen werden, zum Beispiel:
/usr/lib/systemd/system/für von Paketen bereitgestellte Units auf vielen Distributionen/run/systemd/system/für zur Laufzeit erzeugte oder transiente Konfiguration/etc/systemd/system/für dauerhafte lokale Administratorkonfiguration und Überschreibungen
Die genauen Anbieterpfade können abweichen. Lokale Konfiguration mit höherer Priorität überschreibt Dateien gleichen Unit-Namens mit niedrigerer Priorität. Bevorzuge mit systemctl edit UNIT erstellte Drop-in-Überschreibungen, statt eine vollständige Anbieterdatei zu kopieren und zu verändern, damit Paketaktualisierungen sichtbar bleiben.
Wo sollten dauerhafte lokale Überschreibungen für System-Units normalerweise liegen?
Abhängigkeiten und Reihenfolge
Systemd erstellt aus Abhängigkeitsbeziehungen eine Transaktion. Wants= und Requires= nehmen andere Units mit unterschiedlicher Bindungsstärke in eine Transaktion auf. Before= und After= legen die Reihenfolge fest, wenn beide Units eingeplant sind; allein bewirken sie nicht, dass eine andere Unit startet.
Eine Zeile After=network.target beweist nicht, dass eine nutzbare Verbindung, DNS oder ein bestimmter entfernter Endpunkt bereit ist. Dienste müssen die geeignete Network-online-Integration verwenden oder eigene Wiederholungs- und Bereitschaftsmechanismen implementieren.
Was legt After=other.service für sich allein fest?
Targets und die standardmäßige Boottransaktion
default.target ist gewöhnlich ein Alias auf ein Target wie multi-user.target oder graphical.target. Systemd startet eine Transaktion für dieses Target und seine Abhängigkeiten. Dabei kann nicht zusammenhängende Arbeit gleichzeitig fortschreiten, während ausdrückliche Reihenfolgen eingehalten werden.
Targets ähneln Runlevels nur auf einer groben Kompatibilitätsebene. Mehrere Targets können gleichzeitig aktiv sein, eigene Targets können erstellt werden, und die Aktivität eines Targets bedeutet nicht, dass jeder Dienst des Rechners fehlerfrei ist.
Was wählt default.target normalerweise aus?
Lektion abgeschlossen
Sie haben Überblick über systemd abgeschlossen
Du kannst systemd nun anhand von laufenden Managern, Units und Transaktionen beschreiben.
Bestätige systemd über die betreffende PID 1 und Managerverbindung.
Ordne Ressourcentypen den Unit-Endungen zu.
Platziere lokale Überschreibungen oberhalb der Anbieterkonfiguration.
Trenne Abhängigkeitsstärke, Reihenfolge und Anwendungsbereitschaft.
Behandle Targets als Gruppierungen und Meilensteine statt als exklusive Zustände.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen