systemd Übersicht

systemd ist eine Programmsammlung, die Linux-Systeme startet und betreut. systemd ist nach dem Linux Kernel selber die wichtigste Software eines Linuxsystems. Von daher bezeichnet sich das Projekt auf dessen Homepage auch selber als "Sammlung von Grundbausteinen für ein Linux-System.

Die allermeisten Linuxdistributionen wie z.B. Ubuntu, Debian, Raspbery Pi OS, Fedora, Suse usw. setzen systemd ein. systemd ist verantwortlich für das Starten, Verwalten und Überwachen des Bootprozesses sowie des laufenden Systems. systemd wird als allererster Prozess gestartet und hat deshalb die PID 1.

Installation

Bei allen Distributionen, die systemd einsetzen, ist es integraler Bestandteil des Systems und muss nicht (nach-) installiert werden.

Wenn man nicht sicher ist, ob die eingesetzte Linuxdistribution systemd nutzt, gibt man folgenden Befehl im Terminal ein:

Ist systemd im Einsatz, erhält man aus Ausgabe unter anderem die Versionsnummer der installierten systemd Version.

systemd Units

Eine grundlegende Komponente zum Starten von Programmen und Diensten sowie um Vorzugeben, was systemd wann und wo machen soll, sind Units. Units sind einfache Textdateien, welche aus einer Reihe von Sektionen (in der Regel drei) bestehen. Jede Sektion enthält ein oder mehrere Direktiven. Diese Direktiven teilen systemd mit, was gemacht werden soll.

systemd kennt verschiedene Unit-Typen. Jeder Typ ist für einen bestimmten Zweck gedacht. Units werden anhand der Dateiendung identifiziert. Die Units, mit denen man als normaler Desktopnutzer oder Hobbyadministrator eines Heimservers in Kontakt kommt sind in der Regel nur Service Units und ggf. auch Timer Units. Ersterer dienen dazu, ein Programm oder einen Prozess zu starten (und ggf. zu überwachen), letztere dienen dazu ein Programm / einen Prozess periodisch auszuführen.

Die verschiedenen Unit-Typen sind die folgenden:

systemd systemweite Units und User Units

systemd unterscheidet zwischen systemweiten und User Units (auf deutsch: nutzerspezifische Units). systemweite Units gelten, wie der Name schon sagt, für das gesamte System und werden in der Regel bereits beim Booten des Systems gestartet und angelegt. Dies erfolgt unabhängig davon, ob eine oder auch mehrere Nutzer am System angemeldet sind. systemweit Units können nur mit Root-Rechten angelegt bzw. editiert werden. Systemweite Units müssen aber nicht zwingend mit Root-Rechten laufen, sie können auch anderen Nutzern des Systems zugewiesen werden.

User Units werden ausgeführt, wenn sich der Nutzer ins System. User Units könnten von jedem Nutzer individuell für sich selber angelegt werden. Als Administrator kann man aber auch User Units für alle Nutzer anlegen. Diese werden immer dann gestartet, wenn es ein (egal welcher) Nutzer am System anmeldet.

User Units werden - sofern nicht explizit anders hinterlegt - wieder gestoppt, wenn sich der Benutzer wieder vom System abmeldet.

Speicherpfad von Units

Unter Ubuntu, Debian und Raspberry Pi OS sind systemweite Unit-Dateien normalerweise in einer der folgenden Verzeichnisse gespeichert:

User Units werden werden normalerweise in einem der folgenden vier Verzeichnisse gespeichert:

systemctl

systemctl ist das zentrale Werkzeug zur Interaktion mit systemd. Mit systemctl kann man z.B. den Status von Units überprüfen sowie diese Starten, Stoppen, Deaktiveren etc. Außerdem kann mit systemctldas System heruntergefahren, neu gestartet und schlafen gelegt werden.

journald

systemd bringt zum Logging journald mit. Ebenso wie systemd ist journald Teil der Standardinstallation von Ubuntu, Debian, Raspberry Pi OS, Fedora , Suse usw. Alle Aktionen, Fehler etc. werden in das zentrale Journal geloggt.

Das Journal kann mit Hilfe von journalctl abgefragt werden.

weitere systemd Werkzeuge

systemd bringt eine Reihe weiterer Werkzeuge mit. Einige davon sind: