Harting Development

Systemctl list services: Ihr umfassender Leitfaden zur Verwaltung von Systemdiensten unter Linux

Lukas Fuchs vor 7 Monaten in  Sicherheitsaspekte 3 Minuten Lesedauer

Verwendung von systemctl list services

systemctl list services ist ein leistungsstarkes Kommandozeilenwerkzeug, mit dem du die auf deinem Linux-System ausgeführten Dienste verwalten kannst. Es bietet eine umfassende Liste aller installierten und laufenden Dienste, sodass du ihren Status, ihre Einstellungen und weitere Details abrufen kannst.

Aufruf von systemctl list services

Um eine Liste aller Dienste anzuzeigen, verwende den folgenden Befehl:

systemctl list-units --type=service

Dieser Befehl listet standardmäßig alle Dienste auf, sowohl aktive als auch inaktive.

Optionen für systemctl list services

Neben der Standardausgabe bietet systemctl list services eine Vielzahl von Optionen, mit denen du die Ausgabe anpassen kannst. Hier sind einige der gängigsten Optionen:

  • -a, --all: Liste alle Dienste auf, unabhängig von ihrem Status.
  • -e, --enabled: Liste nur aktivierte Dienste auf.
  • -f, --full: Zeige zusätzliche Informationen zu jedem Dienst an, z. B. seine Beschreibung und den Pfad zur ausführbaren Datei.
  • --no-legend: Unterdrücke die Legendenausgabe.
  • -q, --quiet: Unterdrücke die Ausgabe von Kopfzeilen und Trennlinien.
  • -t, --type=SERVICE: Liste nur Dienste auf.

Filterung von Diensten

Du kannst die Dienste filtern, die systemctl list services auflistet, indem du eine Regex-Übereinstimmung verwendest:

systemctl list-units --type=service | grep sshd

Dieser Befehl listet nur Dienste auf, die mit "sshd" übereinstimmen, z. B. den SSH-Dienst.

Sortierung von Diensten

Du kannst die Ausgabe von systemctl list services auch sortieren, indem du die Option --sort verwendest:

systemctl list-units --type=service --sort=status

Dieser Befehl sortiert die Dienste nach ihrem Status, sodass aktive Dienste oben angezeigt werden.

Auflistung aktiver Dienste

Aktive Dienste sind Dienste, die derzeit unter deinem Linux-System ausgeführt werden. Um alle aktiven Dienste aufzulisten, kannst du den folgenden Befehl verwenden:

sudo systemctl list-units --state=active

Anzeige aktiver Dienste in Tabellenform

Wenn du die Ausgabe in Tabellenform anzeigen möchtest, kannst du die Option -a verwenden:

sudo systemctl list-units --state=active -a

Anzeige aktiver Dienste mit kurzen Namen

Um nur den kurzen Dienstnamen und nicht den vollständigen Pfad anzuzeigen, kannst du die Option -n verwenden:

sudo systemctl list-units --state=active -n

Beispiele

  • Alle aktiven Dienste auflisten:
sudo systemctl list-units --state=active
  • Alle aktiven Dienste in Tabellenform auflisten:
sudo systemctl list-units --state=active -a
  • Nur die kurzen Namen aktiver Dienste auflisten:
sudo systemctl list-units --state=active -n

Auflistung inaktiver Dienste

Neben der Auflistung aktiver Dienste kann systemctl auch eine Liste inaktiver Dienste bereitstellen. Dies ist nützlich, um den Status von Diensten zu überprüfen, die möglicherweise nicht ausgeführt werden oder gestoppt wurden.

So listest du inaktive Dienste auf

Um eine Liste inaktiver Dienste anzuzeigen, verwende den folgenden Befehl:

systemctl list-units --state=inactive

Dieser Befehl listet alle Dienste auf, die sich im Zustand "inaktiv" befinden. Die Ausgabe enthält den Namen, den Status und eine kurze Beschreibung jedes Dienstes.

Filterung inaktiver Dienste

Du kannst die Liste der inaktiven Dienste mithilfe der Option -p filtern. Diese Option ermöglicht es dir, nach bestimmten Eigenschaften wie Name, Status oder Beschreibung zu filtern.

Zum Beispiel, um nur Dienste aufzulisten, die den "http" im Namen enthalten, verwende den folgenden Befehl:

systemctl list-units --state=inactive -p Name=http

Sortierung inaktiver Dienste

Du kannst die Liste der inaktiven Dienste auch nach verschiedenen Feldern sortieren. Die Option -sort ermöglicht es dir, die Dienste nach Name, Status, PID oder anderen Feldern zu sortieren.

Um beispielsweise die Dienste nach Name zu sortieren, verwende den folgenden Befehl:

systemctl list-units --state=inactive --sort=name

Anzeige von Details zu inaktiven Diensten

Um detailliertere Informationen zu einem inaktiven Dienst anzuzeigen, verwende den Befehl systemctl show. Dieser Befehl zeigt eine umfassende Liste der Eigenschaften des Dienstes an, einschließlich Beschreibung, Abhängigkeiten und Aktivierungsstatus.

Um beispielsweise detaillierte Informationen zum Dienst "httpd" anzuzeigen, verwende den folgenden Befehl:

systemctl show httpd

Umgang mit leerer Ausgabe

Wenn der Befehl systemctl list-units --state=inactive keine Ergebnisse zurückgibt, bedeutet dies, dass es keine inaktiven Dienste gibt. Dies kann daran liegen, dass alle Dienste aktiv sind oder dass sie alle maskiert oder deaktiviert wurden.

Filterung von Diensten

Manchmal musst du nur eine bestimmte Untergruppe von Diensten auflisten. systemctl list services bietet dazu mehrere Filteroptionen.

Filtern nach Status

Mit der Option --state kannst du Dienste nach ihrem aktuellen Status filtern. Zu den verfügbaren Optionen gehören:

  • active: Nur aktive Dienste anzeigen
  • inactive: Nur inaktive Dienste anzeigen

Beispiel:

systemctl list-services --state=active

Filtern nach Name

Mit der Option --pattern kannst du Dienste nach ihrem Namen filtern. Du kannst Platzhalter (*) verwenden, um mehrere Dienste abzugleichen.

Beispiel:

systemctl list-services --pattern="http*"

Filtern nach Beschreibung

Mit der Option --description kannst du Dienste nach ihrer Beschreibung filtern. Dies kann hilfreich sein, wenn du Dienste mit ähnlichen Namen finden möchtest.

Beispiel:

systemctl list-services --description="*Web Server*"

Kombinieren von Filtern

Du kannst mehrere Filteroptionen kombinieren, um deine Suche weiter einzugrenzen. Verwende dazu die Option --and oder --or.

Beispiel:

systemctl list-services --state=active --pattern="http*"

Dies listet nur aktive Dienste auf, deren Namen mit "http" beginnen.

Fortgeschrittene Filterung

Zusätzlich zu den grundlegenden Filteroptionen bietet systemctl auch fortgeschrittene Filteroptionen, die über die Option --output zugänglich sind.

Zum Beispiel kannst du die Option --no-legend verwenden, um die Legende aus der Ausgabe zu entfernen, oder --full verwenden, um umfangreichere Informationen zu jedem Dienst anzuzeigen.

Weitere Informationen zur Verwendung fortgeschrittener Filter findest du in der systemctl-Dokumentation.

Sortierung von Diensten

Neben der Filterung kannst du die mit systemctl list-services aufgelisteten Dienste auch sortieren, um die Informationen in einer für dich sinnvollen Reihenfolge anzuzeigen.

Sortieren nach Service-Einheit

Standardmäßig werden die Dienste in der Reihenfolge des Dienstausschlusses sortiert. Dies kann für die allgemeine Verwendung ausreichend sein, aber es gibt Fälle, in denen du eine andere Sortierreihenfolge bevorzugst.

Um nach der Service-Einheit zu sortieren, verwende die Option --sort=-unit:

sudo systemctl list-services --sort=-unit

Dies sortiert die Liste in absteigender Reihenfolge nach den Namen der Service-Einheiten.

Sortieren nach Beschreibung

Wenn du lieber nach der Beschreibung des Dienstes sortieren möchtest, kannst du die Option --sort=description verwenden:

sudo systemctl list-services --sort=description

Dies sortiert die Liste in aufsteigender Reihenfolge nach den Beschreibungen der Dienste.

Sortieren nach Status

Eine weitere nützliche Sortieroption ist die Option --sort=status, mit der du nach dem Status des Dienstes sortieren kannst:

sudo systemctl list-services --sort=status

Dies sortiert die Liste in aufsteigender Reihenfolge nach den Status der Dienste, wobei aktive Dienste zuerst angezeigt werden.

Sortieren nach Starttyp

Wenn du daran interessiert bist, nach dem Starttyp des Dienstes zu sortieren, kannst du die Option --sort=start-type verwenden:

sudo systemctl list-services --sort=start-type

Dies sortiert die Liste in absteigender Reihenfolge nach den Starttypen der Dienste.

Mehrere Sortierkriterien

Du kannst auch mehrere Sortierkriterien kombinieren, um die Liste nach einer bestimmten Reihenfolge zu sortieren. Beispielsweise kannst du die Liste zuerst nach Status und dann nach Starttyp sortieren:

sudo systemctl list-services --sort=status,start-type

Anzeigen von Dienstdetails

Wenn du dich mit den grundlegenden Befehlen zur Auflistung von Diensten vertraut gemacht hast, kannst du mit systemctl tiefer in die Details der einzelnen Dienste eintauchen.

Befehl systemctl status

Der Befehl systemctl status liefert dir ausführliche Informationen über einen bestimmten Dienst. Er zeigt dir den aktuellen Status des Dienstes (aktiv, inaktiv, fehlgeschlagen), ob der Dienst beim Booten automatisch gestartet wird und Fehlermeldungen, die der Dienst ausgegeben hat.

Um den Status eines Dienstes anzuzeigen, gib Folgendes ein:

systemctl status <Dienstname>

Beispiel:

systemctl status sshd

Dienstprotokolle anzeigen

Wenn ein Dienst auf Probleme stößt, kannst du seine Protokolldateien einsehen, um die Ursache zu ermitteln. Der Befehl journalctl ermöglicht dir den Zugriff auf die Systemprotokolle, einschließlich der Dienstprotokolle.

Um die Protokolldateien eines Dienstes anzuzeigen, gib Folgendes ein:

journalctl -u <Dienstname>

Beispiel:

journalctl -u sshd

Dienstkonfigurationsdateien anzeigen

Die Dienstkonfigurationsdateien enthalten Einstellungen, die das Verhalten des Dienstes steuern. Du kannst diese Dateien anzeigen, um die Konfiguration zu überprüfen oder Änderungen vorzunehmen.

Um die Konfigurationsdatei eines Dienstes anzuzeigen, gib Folgendes ein:

systemctl cat <Dienstname>

Beispiel:

systemctl cat sshd

Dienstabhängigkeiten anzeigen

Dienste können voneinander abhängig sein. Du kannst die Abhängigkeiten eines Dienstes anzeigen, um zu verstehen, welche anderen Dienste gestartet werden müssen, damit der Dienst ordnungsgemäß funktioniert.

Um die Abhängigkeiten eines Dienstes anzuzeigen, gib Folgendes ein:

systemctl list-dependencies <Dienstname>

Beispiel:

systemctl list-dependencies sshd

Umgang mit leerer Ausgabe

Wenn du den Befehl systemctl list services ausführst, kannst du in folgenden Fällen eine leere Ausgabe erhalten:

Kein einziger Dienst vorhanden

Wenn du noch keine Dienste auf deinem System eingerichtet hast, wird systemctl list services keine Ausgabe erzeugen. In diesem Fall kannst du Dienste mit dem Befehl systemctl start oder systemctl enable hinzufügen.

Alle Dienste sind inaktiv

Wenn alle Dienste auf deinem System gestoppt sind, zeigt systemctl list services keine aktiven Dienste an. Du kannst aktive Dienste mit dem Befehl systemctl start starten.

Berechtigungen fehlen

Wenn du nicht über ausreichende Berechtigungen zum Anzeigen von Systemdiensten verfügst, gibt systemctl list services eine leere Ausgabe aus. Melde dich in diesem Fall als root-Benutzer an oder verwende den Befehl sudo, um den Befehl mit erhöhten Berechtigungen auszuführen.

Dienst nicht gefunden

Wenn der angegebene Dienst nicht auf deinem System vorhanden ist, gibt systemctl list services eine leere Ausgabe aus. Überprüfe in diesem Fall, ob der Dienstname korrekt eingegeben wurde, oder verwende den Befehl systemctl list-unit-files oder find /etc/systemd/system -type f, um nach dem Dienst zu suchen.

Beheben häufiger Fehler

Beim Verwenden von systemctl list services können gelegentlich Fehler auftreten. Hier sind einige häufige Fehler und ihre Lösungen:

Fehler: Befehl nicht gefunden

Ursache: Der Befehl systemctl ist möglicherweise nicht installiert oder nicht in deinem Pfad enthalten.

Lösung: Installiere systemctl mit deinem Paketmanager oder füge den Pfad zu systemctl deiner Umgebungsvariablen $PATH hinzu.

Fehler: Berechtigungsverweigert

Ursache: Du hast nicht die erforderlichen Berechtigungen, um den Befehl auszuführen.

Lösung: Führe den Befehl als Root oder mit dem Befehl sudo aus.

Fehler: Leere Ausgabe

Ursache: Es sind keine aktiven oder inaktiven Dienste vorhanden.

Lösung: Starte einige Dienste mit systemctl start oder überprüfe die Konfiguration deiner Dienste, um sicherzustellen, dass sie aktiviert sind.

Fehler: Dienst existiert nicht

Ursache: Der angegebene Dienstname ist ungültig oder nicht vorhanden.

Lösung: Überprüfe die Rechtschreibung des Dienstnamens und stelle sicher, dass der Dienst existiert.

Fehler: Ungültiges Argument

Ursache: Du hast ein ungültiges Argument an den Befehl übergeben.

Lösung: Überprüfe die Syntax des Befehls und stelle sicher, dass du die richtigen Optionen angibst.

Fortgeschrittene Fehlerbehebung

Wenn du weiterhin Probleme mit systemctl list services hast, kannst du versuchen, Folgendes zu tun:

  • Überprüfe die Manpages von systemctl mit man systemctl.
  • Suche in Online-Foren oder Dokumentationen nach ähnlichen Problemen.
  • Bitte um Hilfe in Community-Foren wie Stack Overflow.

Fortgeschrittene Nutzung

Für eine noch genauere Kontrolle über deine Systemdienste bietet systemctl list services eine Reihe erweiterter Optionen.

Ausführliche Ausgabe

Um eine detailliertere Ausgabe zu erhalten, kannst du die Option --full verwenden:

systemctl list-services --full

Dies zeigt dir zusätzliche Informationen an, wie z. B. die Beschreibung des Dienstes, den Status und die Abhängigkeiten.

Abhängigkeiten anzeigen

Um die Abhängigkeiten eines bestimmten Dienstes anzuzeigen, verwende die Option --tree:

systemctl list-services --tree $DIENSTNAME

Dies zeigt eine Baumstruktur an, die die Abhängigkeiten des Dienstes und deren Status zeigt.

Zusammenfassende Ausgabe

Für eine zusammenfassende Ausgabe, die die Anzahl aktiver, inaktiver und fehlgeschlagener Dienste anzeigt, verwende die Option --summary:

systemctl list-services --summary

Ausgabeformatierung anpassen

Du kannst die Ausgabeformatierung anpassen, indem du die Option --output verwendest. Beispielsweise, um die Ausgabe im JSON-Format zu erhalten:

systemctl list-services --output json

Oder im YAML-Format:

systemctl list-services --output yaml

Dienste gruppieren

Um Dienste nach bestimmten Kriterien zu gruppieren, kannst du die Option --group verwenden. Beispielsweise, um Dienste nach Status zu gruppieren:

systemctl list-services --group=enabled

Dies zeigt nur Dienste an, die aktiviert sind.

Dienste priorisieren

Manchmal ist es notwendig, bestimmten Diensten Vorrang vor anderen zu geben. Dies kannst du mit der Option --order erreichen. Beispielsweise, um Dienste nach Startzeit zu priorisieren:

systemctl list-services --order=start

Dies zeigt zuerst Dienste an, die zuletzt gestartet wurden.

Dienste mit regulären Ausdrücken filtern

Für komplexere Filter kannst du reguläre Ausdrücke mit der Option --pattern verwenden. Beispielsweise, um alle Dienste aufzulisten, die das Wort "ssh" enthalten:

systemctl list-services --pattern='ssh'

Folge uns

Neue Posts

Beliebte Posts