Ubuntu 16.10 Yakkety Yak
Ubuntu 16.04 Xenial Xerus
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.
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.
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.
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.
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. |
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 kann die zugehörige Unit nicht mehr gestartet werden. |
is-enabled UNITDATEI | Prüft, über die Unit-Datei UNITDATEI aktiviert ist. |
Eine vollständige Übersicht inklusive Erklärung zu den Unit-Datei Kommandos ist in der Dokumentation von systemctl zu finden.
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.
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.
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.
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.
systemd/Service Units - Wikiartikel zu systemd Service Units
systemd/Timer Units - Wikiartikel zu systemd Timer Units
komplette Dokumentation von systemctl
Diese Revision wurde am 28. November 2016 08:46 von apt-ghetto erstellt.