Der Befehl systemctl steuert systemd – das Init-System und den Dienstmanager moderner Distributionen. Damit listest du laufende Dienste auf, startest sie, stoppst sie und prüfst ihren Status.

Was ist systemd?

Systemd verwaltet den gesamten Boot-Prozess und alle Hintergrunddienste deines Systems. Ob Webserver, SSH oder Cron – systemd startet und überwacht diese Prozesse.

Systemd arbeitet mit sogenannten Units. Eine Unit ist eine Konfigurationsdatei, die einen Dienst, einen Mount-Punkt, ein Gerät oder eine andere Ressource beschreibt. Dienste haben die Endung .service.

Laufende Dienste auflisten

Um alle geladenen Dienste anzuzeigen:

systemctl list-units --type service

Die Ausgabe zeigt eine Tabelle mit folgenden Spalten:

SpalteBedeutung
UNITName der Diensteinheit
LOADOb die Unit-Datei geladen wurde
ACTIVEAktivierungsstatus (active, inactive, failed)
SUBDetaillierter Unterstatus (running, exited, dead)
DESCRIPTIONKurzbeschreibung des Dienstes

Standardmäßig siehst du nur aktive Dienste. Um auch inaktive anzuzeigen:

systemctl list-units --type service --all

Alle installierten Dienste anzeigen

Die vorherigen Befehle zeigen nur geladene Units. Um alle installierten Unit-Dateien zu sehen – unabhängig davon, ob sie aktiv sind:

systemctl list-unit-files --type service

Die Spalte STATE zeigt, ob ein Dienst beim Systemstart aktiviert (enabled) oder deaktiviert (disabled) ist.

Status eines Dienstes prüfen

Der Befehl systemctl status liefert detaillierte Informationen zu einem bestimmten Dienst:

systemctl status nginx

Die Endung .service kannst du weglassen – systemctl status nginx und systemctl status nginx.service sind gleichwertig.

Die Ausgabe enthält:

  • Loaded: Pfad zur Unit-Datei und ob der Dienst beim Boot startet
  • Active: Aktueller Status und Laufzeit
  • Main PID: Prozess-ID des Hauptprozesses
  • Tasks: Anzahl der laufenden Tasks
  • Memory: Speicherverbrauch
  • CGroup: Zugehörige Control Group

Ein grüner Punkt (●) signalisiert einen aktiven Dienst, ein roter einen fehlgeschlagenen.

Schnelle Statusabfrage

Für Skripte oder schnelle Prüfungen reicht oft ein einfacher Statuscheck:

systemctl is-active nginx

Der Befehl gibt active oder inactive aus. Der Exit-Code ist 0 bei aktivem Dienst – praktisch für Shell-Skripte:

if systemctl is-active --quiet nginx; then
    echo "Nginx läuft"
fi

Die Option --quiet unterdrückt die Textausgabe und liefert nur den Exit-Code.

Dienste starten und stoppen

Einen Dienst starten:

sudo systemctl start nginx

Einen Dienst stoppen:

sudo systemctl stop nginx

Einen Dienst neu starten:

sudo systemctl restart nginx

Konfiguration neu laden, ohne den Dienst zu unterbrechen:

sudo systemctl reload nginx

Autostart aktivieren und deaktivieren

Damit ein Dienst beim Systemstart automatisch läuft:

sudo systemctl enable nginx

Autostart deaktivieren:

sudo systemctl disable nginx

Um einen Dienst gleichzeitig zu starten und für den Autostart zu aktivieren:

sudo systemctl enable --now nginx

Zusammenfassung

BefehlFunktion
systemctl list-units --type serviceAktive Dienste auflisten
systemctl list-unit-files --type serviceAlle installierten Dienste anzeigen
systemctl status dienstDetaillierten Status anzeigen
systemctl is-active dienstSchneller Statuscheck
systemctl start/stop/restart dienstDienst starten, stoppen, neu starten
systemctl enable/disable dienstAutostart aktivieren oder deaktivieren

Mit systemctl hast du die volle Kontrolle über die Dienste deines Systems.