Wie man Linux-Dienste mit systemctl auflistet

Mit systemctl können Sie unter Linux laufende Dienste verwalten, Details zu spezifischen Diensten abrufen und aktivierte Einheiten auflisten, um die Funktionsweise Ihres Systems zu überwachen.
Zusammenfassung
- Auf den meisten Linux-Geräten können Sie "systemctl --type=service --state=running" ausführen, um laufende Dienste anzuzeigen.
- Erhalten Sie detaillierte Informationen über einen Dienst, zum Beispiel SSH, mit dem Befehl "systemctl status sshd".
- Um alle aktivierten Einheiten auf Ihrem System anzuzeigen, verwenden Sie "systemctl list-unit-files --state=enabled".
Ihr Linux-Computer beruht auf vielen Hintergrundaufgaben, die als Dienste oder Daemons bezeichnet werden. Auf systemd-basierten Distributionen haben Sie integrierte Befehle, mit denen Sie sehen können, welche Dienste laufen, deaktiviert oder fehlgeschlagen sind.
Was sind Dienste und Daemons?
Dienste und Daemons sind Hintergrundaufgaben, die ohne Benutzeroberfläche laufen, keine menschliche Interaktion erfordern und normalerweise gestartet werden, wenn der Computer hochfährt.
Früher wurden Dienste von init gestartet, dem allerersten Prozess. Die Details der Dienste wurden in einer Sammlung von Skripten im Verzeichnis "/etc/init/d" gespeichert. Bei nicht-systemd Distributionen ist das immer noch der Fall.
In der Welt von systemd werden Dienste von systemd gestartet, welches jetzt der erste Prozess ist, der ausgeführt wird. Die Details der Dienste werden in Einheitendateien im Verzeichnis "/usr/lib/systemd" gespeichert.
Laut seiner Man-Seite ist systemd ein System- und Dienstmanager. Sie können den Befehl systemctl verwenden, um verschiedene Aspekte des systemd-Systems, einschließlich Dienste und Daemons, zu inspizieren und zu steuern.
Da wir hier systemd-spezifische Befehle betrachten, ist das erste, was Sie wissen müssen, ob Sie eine systemd-basierte Distribution verwenden oder nicht.
init oder systemd-basiert?
Die überwiegende Mehrheit der Linux-Distributionen verwendet systemd, einschließlich Arch, Red Hat und Debian sowie viele davon abgeleitete Distributionen. Dazu gehört die Ubuntu-Familie, Fedora und dessen Abwandlungen sowie Manjaro und andere Arch-basierte Distributionen.
Es gibt jedoch Abspaltungen oder Varianten einiger dieser Distributionen, die speziell geschaffen wurden, um die Nutzung von systemd zu vermeiden. Darüber hinaus gibt es andere Init-Systeme, die man anstelle des standardmäßigen in der Distribution verwenden könnte, wie runit oder s6-linux-init.
Wenn Sie einen Linux-Computer verwalten müssen, den Sie nicht selbst eingerichtet haben, ist der einzige Weg, um sicherzugehen, ob er systemd verwendet oder nicht, dies zu überprüfen. Wir können das tun, indem wir den Prozessbaum mit dem Befehl pstree betrachten. Wir müssen nur den allerobersten Teil des Baums sehen – wir suchen schließlich den allerersten Prozess, der läuft – also leiten wir die Ausgabe durch den Befehl head, um die ersten fünf Einträge zu erhalten.
pstree | head -5
Wir können sehen, dass systemd der erste Prozess ist, der nach dem Booten ausgeführt wird, also sind wir definitiv auf einer systemd-basierten Linux-Installation.
Verwendung von systemctl zur Auflistung von Diensten
Der Befehl zum Auflisten von Diensten und Daemons ist systemctl. Wir können den Befehl systemctl mit den Optionen type und state verfeinern. Wir bitten systemctl, über Dienste zu berichten, die sich im laufenden Zustand befinden.
systemctl --type=service --state=running
Eine Tabelle mit Informationen wird generiert. Wenn sie zu breit oder lang für Ihr Terminalfenster ist, wird sie in Ihrem standardmäßigen Dateibetrachter angezeigt, der wahrscheinlich less sein wird.
Um das rechte Ende der Tabelle zu sehen, drücken Sie die rechte Pfeiltaste. Um zur gewohnten Ansicht zurückzukehren, drücken Sie die linke Pfeiltaste.
Drücken Sie die Taste Q, um less zu beenden. Die angezeigten Spalten sind:
- Unit: Der Name des Dienstes oder Daemons. Die Spalte ist mit "Unit" betitelt, weil alles, was in dieser Spalte steht, mit Informationen gestartet wurde, die
systemdin einer Einheitendatei gefunden hat. - Load: Der Ladezustand des Dienstes oder Daemons. Er kann geladen, nicht gefunden, falsche Einstellungen, Fehler oder maskiert sein.
- Active: Der Gesamtzustand des Dienstes oder Daemons. Er kann aktiv, nachladend, inaktiv, fehlgeschlagen, aktivierend oder deaktivierend sein.
- SUB: Der Subzustand des Dienstes oder Daemons. Er kann tot, beendet, fehlgeschlagen, inaktiv oder laufend sein.
- Description: Eine kurze Beschreibung der Einheit.
Wir können die Ausgabe von systemctl durch grep leiten, wenn wir uns auf einen bestimmten Dienst konzentrieren möchten. Dieser Befehl isoliert den Tabelleneintrag für den ssh-Dienst.
systemctl --type=service --state=running | grep ssh
Bisher haben wir den Inhalt der Tabelle gefiltert, indem wir die Option state=running angegeben haben. Wir können auch beliebige andere Werte des Unterstatus verwenden: dead, exited, failed, inactive oder running.
Schauen wir nach fehlgeschlagenen Diensten:
systemctl --type=service --state=failed
Kombinationen von Unterzuständen können verwendet werden. Geben Sie diese als kommagetrennte Liste ein. Stellen Sie sicher, dass Sie keinen Leerraum zwischen den Optionen einfügen. Beachten Sie, dass dies Dienste findet, die einem dieser Zustände entsprechen.
systemctl --type=service --state=failed,exited
Durch Drücken der rechten Pfeiltaste, um die außer Sicht stehenden Spalten anzusehen, zeigt sich, dass wir eine Mischung aus ausgegangenen und fehlgeschlagenen Diensten in der Liste haben.
Standardmäßig listet systemctl Prozesse—Dienste und Daemons—auf, die von systemd gestartet wurden, weil systemd eine Unit-Datei gefunden hat, die eine gültige Unit-Datei für sie enthält. Deshalb ist der Kurzbegriff für all diese Prozesse "Units".
Es gibt eine Option, um systemctl ausdrücklich anzuweisen, Units aufzulisten, aber da dies die Standardaktion ist, wird sie nicht oft verwendet.
Diese Befehle erzeugen die gleichen Ergebnisse.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running
Verwendung von systemctl zum Auflisten von Unit-Dateien
Wir können den Geltungsbereich des systemctl-Befehls erweitern, indem wir die Option list-unit-files einfügen. Dies berichtet nicht nur über gestartete Dienste und Daemons, sondern listet auch alle auf Ihrem Computer installierten Unit-Dateien auf.
systemctl list-unit-files --state=enabled
Eine farbige Tabelle wird angezeigt.
Das Entfernen der state-Option hebt die Filterung auf. Die Ausgabe enthält alle installierten Unit-Dateien, unabhängig von deren Zustand.
systemctl list-unit-files
Die Ausgabe wird deutlich mehr Einträge enthalten als die Ergebnisse der vorherigen Befehle.
Auf unserem Testcomputer ist die Ergebnisliste fast viermal länger als die Ausgabe der vorherigen Befehle.
Wenn Sie die state-Option verwenden möchten, können Sie mehrere Zustände damit verwenden, wie wir zuvor gesehen haben. Die gleichen Regeln gelten. Geben Sie die Optionen als kommagetrennte Werte an und schließen Sie keinen Leerraum ein.
Dieser Befehl listet alle Unit-Dateien auf, die entweder deaktiviert oder beim Starten fehlgeschlagen sind.
systemctl list-unit-files --state=disabled,failed
Eine reduzierte Anzahl von Ergebnissen wird angezeigt, gefiltert nach den Auswahlen, die Sie mit der Zustandsoption vorgenommen haben.
Einen Dienst im Detail betrachten
Wenn etwas an einem Dienst oder Daemon Ihr Interesse weckt und einen tieferen Einblick verdient, können Sie ihn mit der Option status von systemctl detailliert betrachten.
Sehen wir uns den SSH-Daemon, sshd, an. Alles, was wir tun müssen, ist, die Statusoption und den Namen des Dienstes oder Daemons zu verwenden.
systemctl status sshd
Diese kompakte Anzeige zeigt:
- Den Namen des Dienstes zusammen mit einer kurzen Beschreibung. Ein farbkodierter Punkt zeigt an, ob er läuft oder nicht. Grün bedeutet, dass er läuft, rot bedeutet, dass er nicht läuft.
- Was geladen wurde, einschließlich des Pfades zur Unit-Datei.
- Wie lange er bereits läuft.
- Wo die Dokumentation im
man-Handbuch zu finden ist. - Die Prozess-ID der laufenden Instanz.
- Wie viele gleichzeitige Instanzen dieses Dienstes laufen. In der Regel wird dies eins sein.
- Wie viel Speicher verbraucht wird.
- Wie viel CPU-Zeit verbraucht wurde.
- Die Kontrollgruppe, zu der der Dienst gehört.
Relevante Einträge aus dem Systemprotokoll werden ebenfalls angezeigt. Dies sind typischerweise Ereignisse wie der Start des Dienstes. Diese können informativ sein, wenn Sie einen Dienst oder Daemon untersuchen, der nicht korrekt gestartet wurde.
Die autonomischen Systeme
Dienste und Daemons bieten viele der automatischen Aktionen Ihres Betriebssystems, daher sind sie von zentraler Bedeutung. Das bedeutet, dass ihre Gesundheit ebenfalls von entscheidender Bedeutung ist.
Eine Übersicht über Ihre Dienste, Daemons und Unit-Dateien zu erhalten, ist.
Es ist einfach und informativ. Es ist auch ein wertvoller Schritt zur Fehlersuche, wenn ein Dienst oder Daemon sich weigert zu starten.
Bist du neugierig auf weitere Artikel wie Wie man Linux-Dienste mit systemctl auflistet? Entdecke spannende Inhalte in der Kategorie Linux.

Schreibe einen Kommentar