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
mitman 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'