Diese Lektion bietet einen grundlegenden Überblick über systemd Unit-Dateien und wie man sie mit systemctl verwaltet, dem primären Werkzeug zur Steuerung des Init-Systems. Wir werden die grundlegende Struktur einer Unit-Datei und die wesentlichen Befehle zur Verwaltung von Linux-Diensten behandeln.
Verständnis einer Systemd Unit-Datei
A systemd Unit-Datei ist eine einfache Textdatei, die einen Dienst, einen Einhängepunkt, ein Gerät oder eine andere Ressource beschreibt, die systemd verwalten kann. Hier ist ein einfaches Beispiel für eine Service-Unit-Datei namens foobar.service:
[Unit]
Description=Mein Foobar Dienst
After=network.target
[Service]
ExecStart=/usr/bin/foobar
[Install]
WantedBy=multi-user.target
Diese einfache Service-Datei ist in Abschnitte unterteilt:
- [Unit]: Dieser Abschnitt enthält Metadaten und Abhängigkeitsinformationen. Die
Descriptionliefert einen für Menschen lesbaren Namen für die Unit. Direktiven wieAfterundBeforesteuern die Startreihenfolge und stellen sicher, dass diese Unit startet, nachdem das Netzwerk verfügbar ist. - [Service]: Dieser Abschnitt definiert, wie der Dienst verwaltet wird. Die Direktive
ExecStartist entscheidend, da sie den Befehl angibt, der zur Ausführung des Dienstes ausgeführt wird. Andere Direktiven wieExecStopundExecReloadkönnen definieren, wie der Dienst gestoppt oder neu geladen wird. - [Install]: Dieser Abschnitt definiert das Verhalten der Unit, wenn sie mit
systemctlaktiviert oder deaktiviert wird. Die DirektiveWantedByweist systemd an, diesen Dienst als Teil eines bestimmten Ziels zu starten, wie z.B. demmulti-user.targetfür einen Standard-Nicht-Grafik-Boot.
Dies ist nur ein kleiner Einblick in systemd Unit-Dateien. Für fortgeschrittenere Konfigurationen wird dringend empfohlen, sich weiter mit dem Thema zu befassen.
Wesentliche Systemctl-Befehle
Nun erkunden wir die wesentlichen systemctl-Befehle, die Sie verwenden werden, um mit systemd Units zu interagieren und Linux-Dienste zu verwalten.
Auflisten von Systemd Units
Um alle aktiven Units anzuzeigen, die systemd gerade verwaltet, verwenden Sie den Befehl list-units.
systemctl list-units
Überprüfen des Status einer Unit
Um den detaillierten Status einer bestimmten Unit anzuzeigen, einschließlich ob sie aktiv und aktiviert ist, sowie deren letzte Protokolleinträge, verwenden Sie den Befehl status.
systemctl status networking.service
Verwalten von Dienstzuständen
Sie können den Laufzeitzustand eines Dienstes mit start, stop und restart steuern.
Um einen Dienst sofort zu starten:
sudo systemctl start networking.service
Um einen laufenden Dienst zu stoppen:
sudo systemctl stop networking.service
Um den Dienst zu stoppen und dann erneut zu starten:
sudo systemctl restart networking.service
Dienste aktivieren und deaktivieren
Das Aktivieren eines Dienstes erstellt einen symbolischen Link, der ihn mit dem Boot-Prozess verbindet und sicherstellt, dass er automatisch startet. Das Deaktivieren entfernt diesen Link.
Um einen Dienst so zu aktivieren, dass er beim Booten startet:
sudo systemctl enable networking.service
Um einen Dienst vom automatischen Start beim Booten zu deaktivieren:
sudo systemctl disable networking.service
Diese Befehle sind die Bausteine für die Dienstverwaltung auf modernen Linux-Systemen. Ihre Beherrschung ist ein wichtiger Schritt auf Ihrem Linux-Weg.