ubuntuusers.de

systemctl

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

systemctl ist ein Kommandozeilenwerkzeug für systemd. Mit Hilfe von systemctl können Befehle an systemd gesendet werden, z.B. zum Steuern von Units, zum Abfragen des Status, zum Herunterfahren des Systems etc.

Installation

Da systemd ab Ubuntu 15.04 integraler Bestandteil des Systems ist (und dieses ohne systemd nicht lauffähig ist), sind alle benötigten Komponenten bereits installiert.

Benutzung

Die allgemeine Syntax von systemctl lautet[1]:

systemctl [OPTIONEN] [KOMMANDO] 

Der Aufruf von systemctl ohne Optionen und Kommandos listet einfach alle geladenen Units auf. In der Regel wird der Befehl aber in Kombination mit einem Kommando und ggf. einer Option aufgerufen.

Wenn mit systemctl nur eine Abfrage erfolgt und eine Liste etc. ausgegeben wird, sind keine Root-Rechte[2] für die Ausführung notwendig. Wenn mit systemctl der Status einer Unit etc. geändert wird (Starten, Stoppen etc.), dann sind dafür in der Regel Root-Rechte erforderlich.

systemctl kennt sehr viele Kommandos und Optionen, von denen im folgenden nur einige aufgeführt sind. Eine komplette Übersicht liefert der Befehl systemctl -h und eine Übersicht mit ausführlicherer Erklärung ist in der Manpage zu systemctl zu finden.

Wenn im folgenden vom "Pattern" die Rede ist, dann ist damit ein Suchmuster gemeint. Ein Beispiel: Das Pattern a* würde auf alle Units etc. zutreffen, die mit dem Buchstaben a anfangen. Bei den meisten Kommandos kann anstelle eines Unit-Namens auch ein Pattern angegeben werden.

Kommandos zum Steuern von Units

Mit Hilfe von systemctl können Units gestoppt, gestartet, etc werden.

Einige Kommandos sind:

Kommandos zum Steuern von Units
Kommando Erklärung
list-units Listet alles geladenen Units auf.
list-timers Listet alle geladenen Timer auf.
list-sockets Listet alle geladenen Sockets auf.
start UNITNAME Startet die Unit mit dem Namen UNITNAME.
stop UNITNAME Stoppt die Unit mit dem Namen UNITNAME.
restart UNITNAME Startet die Unit mit dem Namen UNITNAME neu. Wenn die Unit noch nicht läuft, wird sie gestartet.
reload UNITNAME Startet die Unit mit dem Namen UNITNAME neu und lädt dabei die (eventuell) vorhandenen Konfigurationsdateien. Falls die Unit nicht läuft, wird sie durch reload nicht gestartet!
status UNITNAME Zeigt den Status der Unit mit dem Namen UNITNAME an. Ausgegeben werden u.a. der Status, die PIDs der zugehörigen Prozesse, die zugehörige Unit-Datei etc.

Eine komplette Übersicht inklusive ausführlicher Erklärung ist in der Dokumentation 🇬🇧 zu finden.

Kommandos für Unit-Dateien

Units bestehen aus ein oder mehreren Dateien. Damit diese als Unit automatisch (z.B. beim Systemstart) ausgeführt werden, muss die Unit-Datei erst aktiviert werden. Eine manueller Start über das oben genannten Kommando systemctl start UNIT ist auch für nicht-aktivierte Units möglich.

Kommandos für Unit-Dateien
Kommando Erklärung
list-unit-files Listet alle Unit-Dateien aus. Zur Eingrenzung des Ergebnisses kann ein Pattern angegeben werden.
cat UNITDATEI Listet die Unit-Datei UNITDATEI.
enable UNITDATEI Aktiviert die Unit-Datei UNITDATEI. Danach kann die zugehörige Unit automatisch (z.B. beim Systemstart) gestartet werden.
disable UNITDATEI Deaktiviert die Unit-Datei UNITDATEI. Nach der Deaktivierung wird zugehörige Unit nicht mehr automatisch gestartet. Die Unit kann aber nach wie vor als Abhängigkeit von einer anderen Unit geladen werden werden.
is-enabled UNITDATEI Prüft, über die Unit-Datei UNITDATEI aktiviert ist.
mask UNITDATEI Verhindert, dass eine Unit geladen wird. Die Unit kann so auch nicht mehr als Abhängigkeit von einer andere Unit geladen werden.
unmask UNITDATEI Ermöglicht wieder, dass eine Unit Datei geladen wird.

Eine vollständige Übersicht inklusive Erklärung zu den Unit-Datei Kommandos ist in der Dokumentation 🇬🇧 von systemctl zu finden.

Bearbeiten von Unit-Dateien

Systemctl bietet ebenfalls die Möglichkeit bestehende Unit-Dateien zu bearbeiten. Mit

systemctl edit UNITNAME 

lassen sich einzelne Zeilen an eine bestehende Unit-Datei anhängen.

Um die ganze Unit-Datei zu bearbeiten dient die Option --full.

systemctl edit --full UNITNAME 

Nach abgeschlossenen Änderungen müssen diese mit mit

systemctl daemon-reload 

übernommen werden.

System-Kommandos

Mit Hilfe von systemctl lässt sich der Zustand des Systems ändern:

System Kommandos
Kommando Erklärung
poweroff Fährt den Rechner herunter und schaltet ihn aus.
reboot Startet den Rechner neu.
suspend Versetzt den Rechner in Bereitschaft.
hibernate Versetzt den Rechner in den Ruhezustand.

Die Kommandos poweroff, reboot und suspend können mit normalen Nutzerechten ausgeführt werden und eignen sich dadurch z.B. auch zum Einsatz in Skripten und Startern, welche ohne Root-Rechte laufen.

systemctl kennt noch eine Reihe weiterer Systemkommandos. Eine vollständige Übersicht inklusive Erklärung ist in der Dokumentation 🇬🇧 von systemctl zu finden.

Optionen

Im folgenden werden einige Optionen von systemctl aufgeführt:

Optionen systemctl
Option Erklärung
--all Es werden alle Units/Dateien aufgelistet, nicht nur die aktiven (was die Voreinstellung ist)
t TYP, --type=TYP Listet nur Units vom Typ TYP auf. Mögliche Typen sind z.B. service, timer, mount oder socket.
--state=STATUS Zeigt nur Units mit dem Status STATUS an. Mögliche Status sind: LOAD, SUB, ACTIVE und failed
-H BENUTZER@RECHENER Führt das Kommando via SSH auf einem entfernten Rechner aus. Auf diesem Rechner muss natürlich auch systemd laufen.

Eine Übersicht inklusive Erklärung über alle Optionen ist in der Dokumentation 🇬🇧 von systemctl zu finden.

daemon-reload

Der Befehl[1][2]

sudo systemctl daemon-reload 

veranlasst systemd dazu, alle Konfigurationsdateien neu zu laden und alle Units neu zu starten. Dies ist z.B. notwendig, wenn man im laufenden Betrieb eine aktive Unit-Datei editiert hat und die so geänderte Unit direkt nutzen will, jedoch ohne das System neu zu starten.

Diese Revision wurde am 28. Dezember 2019 22:56 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: systemd, System