systemctl unter Linux: Services anzeigen, verwalten und Fehler beheben – Der umfassende Guide für Einsteiger und Profis

目次

1. Einleitung

Wenn Sie Linux nutzen, möchten Sie häufig den Status von Diensten überprüfen oder sich eine Liste der aktuell laufenden Prozesse anzeigen lassen. In solchen Fällen ist der systemctl-Befehl äußerst praktisch.

Dieser Befehl arbeitet mit „systemd“, dem Startsystem und Service-Manager unter Linux. Mit systemctl können Sie den Status von Diensten (Units) abfragen, sie starten, stoppen, neu starten oder eine Übersicht anzeigen – ein echtes Schweizer Taschenmesser für die Service-Verwaltung.

Gerade mit dem Fokus auf „systemctl Liste“ lassen sich nicht nur aktive Services, sondern auch deaktivierte oder für den Autostart konfigurierte Dienste aus verschiedenen Perspektiven analysieren.

In diesem Abschnitt geben wir einen kompakten Überblick darüber, was systemctl ist und was Sie in diesem Artikel lernen können.

Was ist systemctl?

systemctl ist das Standardwerkzeug auf systemd-basierten Linux-Distributionen, um verschiedene „Units“ wie Dienste, Targets oder Mountpoints zu verwalten und ihren Status zu prüfen.

Zum Beispiel können Sie damit Apache (httpd), SSH und andere Services starten, stoppen oder deren Status anzeigen lassen.

Beziehung zwischen systemd und systemctl

systemd ist das Herzstück des Boot-Prozesses und der Service-Verwaltung unter Linux und hat die alten Systeme wie „SysVinit“ oder „Upstart“ abgelöst. Das Kommandozeilenwerkzeug zur Steuerung von systemd heißt systemctl.

Man kann sagen: systemd ist das Kontrollzentrum, während systemctl der Operator ist, der die Befehle ausführt.

Was Sie in diesem Artikel lernen

In diesem Beitrag erhalten Sie Antworten auf folgende Fragen:

  • Wie kann ich mir die aktuell laufenden Services anzeigen lassen?
  • Wie kann ich auch inaktive Dienste mit auflisten?
  • Wie überprüfe ich, ob ein Dienst beim Systemstart automatisch gestartet wird?
  • Wie lese und interpretiere ich die Ergebnislisten richtig?

Auch Linux-Einsteiger werden anhand von Kommando-Beispielen und Output-Analysen Schritt für Schritt durch die Materie geführt – bleiben Sie also gerne bis zum Ende dabei!

2. So listen Sie Services mit systemctl auf

Gerade bei der Systemadministration unter Linux ist es entscheidend, sich schnell einen Überblick über alle Services zu verschaffen. Mit systemctl lassen sich nicht nur aktive, sondern auch inaktive und für den Autostart konfigurierte Dienste einfach prüfen.

Wir erklären Ihnen die drei wichtigsten Methoden für die Anzeige:

  • Liste aktiver Services
  • Komplette Service-Übersicht (inklusive inaktiver Services)
  • Auflistung der Service-Unit-Dateien (inklusive Startkonfiguration)

2.1 Aktive Services anzeigen

Um die aktuell auf dem System laufenden (aktiven) Services anzuzeigen, verwenden Sie folgenden Befehl:

systemctl list-units --type=service

Die Ausgabe dieses Befehls enthält folgende Spalten:

FeldnameBedeutung
UNITName des Dienstes (z. B. ssh.service)
LOADOb die Unit-Datei geladen wurde
ACTIVEStatus des Dienstes (z. B. active, inactive, failed)
SUBDetailierter Status (z. B. running, exited, dead)
DESCRIPTIONKurzbeschreibung des Dienstes

Mit diesen Informationen sehen Sie z. B., ob nginx aktuell läuft oder welche Services gerade aktiv sind.

2.2 Auch inaktive Services auflisten

Standardmäßig zeigt list-units nur die aktiven Dienste an. Um auch inaktive Services anzuzeigen, ergänzen Sie die Option --all:

systemctl list-units --type=service --all

Mit dieser Option werden auch Services angezeigt, die „inactive“ sind oder bisher nie gestartet wurden.

Sie können die Anzeige außerdem mit der Option --state= filtern, um z. B. nur gestoppte Dienste aufzulisten:

systemctl list-units --type=service --state=inactive

So bekommen Sie gezielt nur die gestoppten Services angezeigt.

2.3 Service-Unit-Dateien anzeigen

Wenn Sie sehen möchten, welche Dienste grundsätzlich vorhanden sind und beim Systemstart aktiviert werden, nutzen Sie diesen Befehl:

systemctl list-unit-files --type=service

Damit erhalten Sie eine Übersicht der Service-Unit-Dateien (Konfigurationsdateien) und deren Status (enabled/disabled etc.).

STATE-WertBedeutung
enabledWird beim Systemstart automatisch aktiviert
disabledMuss manuell gestartet werden, ist beim Systemstart nicht aktiv
staticWird von anderen Units benötigt, kann nicht eigenständig aktiviert/deaktiviert werden
maskedExplizit deaktiviert, kann nicht gestartet werden (geschützt)

So erkennen Sie auf einen Blick, welche Services automatisch starten und ob versehentlich ein Dienst maskiert wurde.

3. Grundlegende Service-Befehle mit systemctl

Mit systemctl können Sie nicht nur den Status von Services prüfen, sondern diese auch starten, stoppen, neu starten oder für den Autostart konfigurieren. Hier die wichtigsten Befehle für die tägliche Linux-Administration.

Gerade bei Server-Management oder Fehlerbehebung sollten Sie diese Kommandos sicher beherrschen.

3.1 Dienst starten

Um einen bestimmten Service manuell zu starten, nutzen Sie den Befehl start:

sudo systemctl start Dienstname

Beispiel: Apache (httpd) starten

sudo systemctl start httpd.service

Dieser Befehl startet den Dienst sofort. Damit er auch nach einem Neustart aktiv bleibt, nutzen Sie zusätzlich enable.

3.2 Dienst stoppen

Um einen Service zu stoppen:

sudo systemctl stop Dienstname

Beispiel:

sudo systemctl stop sshd.service

Der Dienst bleibt gestoppt, bis er explizit wieder mit start gestartet wird.

3.3 Dienst neu starten

Für einen Neustart – z. B. nach einer Konfigurationsänderung – verwenden Sie:

sudo systemctl restart Dienstname

Beispiel:

sudo systemctl restart nginx.service

Der Service wird dabei gestoppt und neu gestartet – unabhängig vom aktuellen Zustand.

3.4 Status eines Dienstes abfragen

Um detaillierte Informationen zum Zustand eines Dienstes zu erhalten:

systemctl status Dienstname

Beispiel:

systemctl status mysql.service

Sie sehen u. a. den aktuellen Status, die Prozess-ID (PID) und eine kurze Log-Übersicht – sehr nützlich bei der Fehlersuche.

3.5 Autostart eines Dienstes aktivieren

Damit ein Service auch nach einem Neustart automatisch startet, nutzen Sie:

sudo systemctl enable Dienstname

Beispiel:

sudo systemctl enable docker.service

Dadurch wird der Dienst beim nächsten Systemstart automatisch gestartet.

3.6 Autostart eines Dienstes deaktivieren

Um den automatischen Start zu verhindern, nutzen Sie:

sudo systemctl disable Dienstname

Beispiel:

sudo systemctl disable cups.service

Jetzt startet der Service beim Booten nicht mehr automatisch.

3.7 Autostart-Status eines Dienstes prüfen

Mit folgendem Befehl prüfen Sie, ob ein Service für den Autostart aktiviert ist:

systemctl is-enabled Dienstname

Beispiel-Ausgabe:

enabled

So sehen Sie auf einen Blick die Start-Policy des Dienstes.

4. Nützliche Optionen und Tipps für systemctl

systemctl kann mehr als nur Dienste starten und stoppen. Mit folgenden Optionen und Tricks verwalten Sie Services noch effizienter.

Mit diesen Techniken holen Sie das Maximum aus der Serviceverwaltung unter Linux heraus.

4.1 Abhängigkeiten von Diensten anzeigen

Oft hängen Dienste von anderen Units ab. Um die Abhängigkeiten zu sehen, nutzen Sie:

systemctl list-dependencies Dienstname

Beispiel:

systemctl list-dependencies nginx.service

Sie erhalten eine hierarchische Darstellung aller verknüpften Units – praktisch für die Analyse der Startreihenfolge oder bei Problemen.

4.2 Inhalt von Unit-Dateien anzeigen

Zur Überprüfung der Service-Konfiguration können Sie direkt die jeweilige Unit-Datei anzeigen lassen:

systemctl cat Dienstname

Beispiel:

systemctl cat ssh.service

Sie sehen den tatsächlichen Pfad und Inhalt der geladenen Unit-Datei – ideal für die Fehlersuche und Anpassung.

4.3 Unit-Dateien neu laden

Wenn Sie Änderungen an Unit-Dateien vornehmen, müssen diese neu eingelesen werden. Das machen Sie mit:

sudo systemctl daemon-reexec

Oder, üblicher ist:

sudo systemctl daemon-reload

Danach werden Änderungen an den Konfigurationsdateien übernommen. Wenn ein neues Setup nicht greift, ist das oft der erste Schritt zur Lösung.

4.4 Service-Logs anzeigen (Tipp)

Zur Fehleranalyse empfiehlt sich journalctl:

journalctl -u Dienstname

Beispiel:

journalctl -u docker.service

Sie sehen Fehler, Neustarts oder Warnungen des Dienstes – unverzichtbar für Troubleshooting.

5. Häufige Probleme und Lösungen

Bei der Serviceverwaltung mit systemctl kann es zu Fehlern oder unerwartetem Verhalten kommen. Hier zeigen wir die gängigsten Probleme und deren Behebung.

So bleiben Sie auch bei „Dienst startet nicht“ oder unklaren Fehlermeldungen souverän und lösen die Situation Schritt für Schritt.

5.1 Wenn ein Dienst nicht startet: Checkliste

Startet ein Dienst nicht, kann zum Beispiel folgender Fehler erscheinen:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Gehen Sie dann in folgender Reihenfolge vor:

  1. Status prüfen
   systemctl status Dienstname
  1. Fehler-Logs prüfen
   journalctl -xe
  1. Unit-Dateien neu laden
    Nach Änderungen unbedingt diesen Befehl ausführen:
   sudo systemctl daemon-reload
  1. Port-Konflikte prüfen
    Nutzen Sie:
   sudo netstat -tulnp | grep Portnummer

5.2 Fehlermeldungen bei status interpretieren

Mit systemctl status erhalten Sie neben dem Status auch die letzten Log-Meldungen, z. B.:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

An „Active: failed“ und „status=1/FAILURE“ erkennen Sie sofort, dass der Dienst fehlgeschlagen ist und welcher Prozess betroffen war.

Über die Zeile „Loaded“ finden Sie zudem direkt den Pfad zur Unit-Datei für gezielte Anpassungen.

5.3 Dienst stoppt unerwartet – was tun?

Wenn ein Service zwar startet, aber sofort wieder stoppt, können folgende Ursachen vorliegen:

  • Fehler in der Konfigurationsdatei
  • Port-Konflikte
  • Fehlende Dateien oder Verzeichnisse
  • Unzureichende Berechtigungen

Empfohlene Vorgehensweise:

  • Konfiguration prüfen und mit nginx -t oder apachectl configtest validieren
  • Mit journalctl -u Dienstname detaillierte Logs ansehen
  • Sicherstellen, dass alle benötigten Verzeichnisse existieren (z. B. /var/run/xxx)

5.4 Fehler „masked“ – Dienst startet nicht

Bei folgender Fehlermeldung nach systemctl start:

Failed to start example.service: Unit example.service is masked.

Der Dienst ist „masked“ (komplett deaktiviert). Heben Sie das Maskieren auf mit:

sudo systemctl unmask Dienstname

Danach können Sie ihn wie gewohnt starten.

6. Fazit

Die Verwaltung von Diensten unter Linux ist essenziell für den stabilen Betrieb. Das zentrale Werkzeug dafür ist systemctl: Mit Listen und Service-Kommandos behalten Sie immer die Kontrolle über den Systemzustand.

In diesem Beitrag zum Keyword „systemctl Liste“ haben wir folgende Punkte behandelt:

Was mit systemctl möglich ist (Zusammenfassung)

  • Services auflisten
  • Aktive Dienste anzeigen (list-units --type=service)
  • Komplette Liste inklusive inaktiver Services (--all oder --state= Optionen)
  • Unit-Dateien und Autostart-Status anzeigen (list-unit-files)
  • Grundlegende Service-Steuerung
  • Starten, Stoppen, Neustarten, Status prüfen (start / stop / restart / status)
  • Autostart konfigurieren (enable / disable / is-enabled)
  • Tipps & Problemlösung
  • Abhängigkeiten anzeigen, Unit-Dateien prüfen, Änderungen neu einlesen
  • Log-Analyse und Status-Prüfung zur Fehlersuche

Best Practices für das Service-Management

  • Status immer vor Änderungen prüfen (status ausführen!)
  • Autostart-Konfiguration kennen (is-enabled nutzen)
  • Nach Änderungen immer daemon-reload verwenden
  • Bei Problemen Logdateien mit journalctl analysieren

Sorgfältige Status- und Log-Prüfungen sind die Basis für eine stabile Systemumgebung und schnelle Fehlerbehebung.

Weiterführende Themen

Wer noch tiefer einsteigen möchte, kann sich mit folgenden Themen beschäftigen:

  • systemd Targets (Unterschied zu Runleveln)
  • Geplante Aufgaben mit systemd-timer
  • Eigene Unit-Dateien erstellen und verwalten

7. Häufig gestellte Fragen (FAQ)

Hier beantworten wir häufig gestellte Fragen zu systemctl und Service-Listen. Auch für Fortgeschrittene ist ein Blick in die FAQ oft hilfreich.

Q1. Was ist der Unterschied zwischen systemctl und service?

A1.
systemctl ist das Standardwerkzeug zur Service-Verwaltung unter systemd und in modernen Linux-Distributionen wie Ubuntu, CentOS oder Fedora im Einsatz.
Der Befehl service stammt noch aus Zeiten von SysVinit und ist meist nur noch aus Kompatibilitätsgründen vorhanden. Für systemd-basierte Systeme wird klar die Nutzung von systemctl empfohlen.

Q2. Was ist der Unterschied zwischen list-units und list-unit-files?

A2.

  • list-units zeigt alle aktuell geladenen Units (d. h. laufende oder jemals gestartete) an.
  • list-unit-files zeigt alle vorhandenen Unit-Dateien samt deren Status (enabled / disabled etc.) an.
    Kurz gesagt: „Was läuft gerade?“ vs. „Was ist konfiguriert?“

Q3. Können Services mit dem Status „static“ gestartet werden?

A3.
Ja, auch Services im Status static können manuell mit start aktiviert werden. Sie lassen sich jedoch nicht per enable für den Autostart konfigurieren, da sie von anderen Units abhängen.

Q4. Wie starte ich einen „masked“ Service?

A4.
masked bedeutet, dass der Dienst komplett deaktiviert ist und nicht gestartet werden kann. Heben Sie das Maskieren mit folgendem Befehl auf:

sudo systemctl unmask Dienstname

Anschließend können Sie den Dienst wie gewohnt starten.

Q5. Gibt es grafische Tools zur Anzeige von Service-Status?

A5.
Je nach Distribution gibt es Programme wie gnome-system-monitor, KSysGuard oder Cockpit, mit denen sich Dienste auch per GUI überwachen lassen.
Für die meisten Steuerungsaufgaben ist jedoch systemctl nach wie vor das zuverlässigste Werkzeug.

Q6. Wo platziere ich selbst erstellte Unit-Dateien?

A6.
Legen Sie eigene Unit-Dateien in /etc/systemd/system/ ab. Nach dem Anlegen oder Bearbeiten führen Sie bitte aus:

sudo systemctl daemon-reload

Anschließend können Sie die Unit wie gewohnt mit start oder enable verwalten.