Laufende Dienste unter Linux auflisten: Ein vollständiger Leitfaden für alle Init-Systeme
Schnelle Antwort: Laufende Dienste unter Linux auflisten
Um laufende Dienste unter Linux aufzulisten, verwenden Sie je nach Init-System einen der folgenden Befehle:
- systemd (Ubuntu 24.04, Debian 12, CentOS/RHEL 9, Fedora 40+ und die meisten modernen Distributionen im Jahr 2026):
Oder um jede Dienst-Unit unabhängig vom Status aufzulisten:systemctl list-units --type=service --state=runningsystemctl --type=service - SysVinit / ältere Systeme (oder um Legacy-Init-Skripte einzuschließen):
service --status-all
systemd ist heute auf praktisch jeder gängigen Linux-Distribution das Standard-Init-System, weshalb systemctl list-units --type=service --state=running in der überwiegenden Mehrheit der Fälle die richtige Antwort ist. Der Befehl gibt eine Tabelle der aktuell aktiven Dienste mit ihren Zuständen LOAD, ACTIVE und SUB aus. Wenn systemctl nicht gefunden wird, läuft auf Ihrem System kein systemd — greifen Sie in diesem Fall auf service --status-all (SysVinit) oder rc-status (OpenRC) zurück.
Der Rest dieses Leitfadens erklärt jede Methode im Detail, einschließlich der Filterung nach Status, der Überprüfung von Diensten beim Systemstart und dem Auffinden von Diensten anhand des Ports.
Einführung
Linux-Dienste sind Hintergrundprozesse, die kontinuierlich laufen, um Systemaufgaben auszuführen — etwa die Verwaltung von Netzwerken, die Abwicklung von Benutzeranmeldungen oder den Betrieb von Webservern. Diese Dienste lassen sich über verschiedene Werkzeuge verwalten, je nach verwendeter Linux-Distribution und Init-System. Im Jahr 2026 ist systemd auf nahezu allen wichtigen Distributionen das Standard-Init-System, weshalb sich der Großteil dieses Leitfadens auf den Befehl systemctl konzentriert.
Zu wissen, wie man laufende Dienste auflistet, ist für Systemadministratoren und Entwickler unverzichtbar. Es hilft bei:
- Fehlerbehebung – Überprüfen, ob ein kritischer Dienst läuft oder ausgefallen ist.
- Leistungsüberwachung – Identifizieren ressourcenintensiver Dienste.
- Sicherheitsaudits – Sicherstellen, dass nur die notwendigen Dienste aktiv sind.
systemctl verwenden (für systemd-basierte Systeme)
Die meisten modernen Linux-Distributionen verwenden systemd als Init-System. Dazu gehören aktuelle 2026er-Releases wie Ubuntu (16.04 bis 24.04 LTS und neuer), Debian (8 bis 12 "Bookworm" und neuer), Fedora (40+), CentOS Stream / RHEL / Rocky Linux / AlmaLinux (7 bis 9 und neuer) sowie openSUSE. Der Befehl systemctl ist auf all diesen Systemen das primäre Werkzeug zur Verwaltung und Auflistung von Diensten.
Den Status eines einzelnen Dienstes überprüfen
Um zu überprüfen, ob ein bestimmter Dienst läuft, verwenden Sie:
systemctl status <service-name>
Um beispielsweise zu prüfen, ob der Webserver nginx läuft:
systemctl status nginx
Die Ausgabe zeigt an, ob der Dienst active (running), inactive oder failed ist, zusammen mit Protokolleinträgen zur Fehlersuche.
Alle aktiven Dienste auflisten
Um alle laufenden Dienste aufzulisten, verwenden Sie:
systemctl list-units --type=service --state=running
Dieser Befehl zeigt eine Tabelle aller aktuell laufenden Dienste zusammen mit ihrem Status an.
Alle Dienste auflisten (einschließlich inaktiver)
Wenn Sie alle Dienste sehen möchten, unabhängig davon, ob sie laufen oder nicht:
systemctl list-units --type=service
Dies schließt Dienste ein, die active, inactive, failed oder in anderen Zuständen sind.
Dienste nach Status filtern
Sie können Dienste anhand ihres Status filtern:
systemctl list-units --type=service --state=failed
Dies listet nur fehlgeschlagene Dienste auf, was bei der Fehlerbehebung nützlich sein kann.
Beim Systemstart aktivierte Dienste auflisten
Um zu überprüfen, welche Dienste automatisch beim Systemstart gestartet werden:
systemctl list-unit-files --type=service | grep enabled
Beispielausgabe
Eine typische Ausgabe von systemctl list-units --type=service --state=running könnte so aussehen:
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
networking.service loaded active running Raise network interfaces
ssh.service loaded active running OpenBSD Secure Shell server
systemd-logind.service loaded active running Login Service
Zusammenfassung
- Verwenden Sie
systemctl status <service>, um den Status eines einzelnen Dienstes zu überprüfen. - Verwenden Sie
systemctl list-units --type=service --state=running, um aktive Dienste aufzulisten. - Verwenden Sie
systemctl list-units --type=service, um alle Dienste anzuzeigen. - Verwenden Sie
systemctl list-unit-files --type=service, um die beim Systemstart aktivierten Dienste anzuzeigen.
ps und grep für laufende Prozesse verwenden
Wenn Sie laufende Dienste auflisten möchten, ohne auf systemctl oder andere Dienstverwaltungswerkzeuge zurückzugreifen, können Sie ps (process status) zusammen mit grep verwenden, um bestimmte Prozesse zu finden.
Diese Methode ist nützlich, wenn:
- Sie auf einem minimalen Linux-System arbeiten, dem die Befehle
systemctloderservicefehlen. - Sie überprüfen möchten, ob ein bestimmter Prozess läuft, unabhängig vom Init-System.
Alle laufenden Prozesse auflisten
Der Befehl ps aux zeigt alle laufenden Prozesse auf dem System an:
ps aux
Dies erzeugt eine umfangreiche Liste aller laufenden Prozesse, einschließlich ihrer Prozess-IDs (PIDs), CPU-Auslastung, Speichernutzung und Befehlsnamen.
Nach einem bestimmten Dienst suchen
Um zu überprüfen, ob ein bestimmter Dienst läuft, verwenden Sie ps aux | grep <service-name>:
ps aux | grep nginx
Dies gibt Zeilen aus, die "nginx" enthalten, und zeigt an, ob der Dienst läuft. Die Ausgabe könnte so aussehen:
root 1034 0.0 0.3 49536 3412 ? Ss 12:34 0:00 nginx: master process /usr/sbin/nginx
www-data 1035 0.0 0.2 49536 2824 ? S 12:34 0:00 nginx: worker process
user 2045 0.0 0.0 14856 900 pts/0 S+ 12:35 0:00 grep --color=auto nginx
Dabei gilt:
- Die ersten beiden Zeilen zeigen an, dass der Dienst nginx läuft.
- Die letzte Zeile (
grep --color=auto nginx) ist dergrep-Befehl selbst. Sie können ihn ausschließen mit:
ps aux | grep nginx | grep -v grep
Prozesse in hierarchischer Form anzeigen
Für eine übersichtlichere Darstellung verwenden Sie:
ps fax
Dies zeigt eine Baumstruktur der laufenden Prozesse und erleichtert es, zu erkennen, welche Dienste laufen und welche untergeordneten Prozesse sie haben.
Dienste anhand des Ports finden
Wenn Sie vermuten, dass ein Dienst auf einem bestimmten Port läuft, sich aber über den Dienstnamen nicht sicher sind, verwenden Sie:
netstat -tulnp | grep :80
oder, falls netstat nicht verfügbar ist:
ss -tulnp | grep :80
Dies listet den Prozess auf, der Port 80 verwendet (häufig genutzt von Webservern wie Nginx oder Apache).
Zusammenfassung
- Verwenden Sie
ps aux, um alle laufenden Prozesse aufzulisten. - Verwenden Sie
ps aux | grep <service-name>, um nach einem bestimmten Dienst zu suchen. - Verwenden Sie
ps faxfür eine Baumansicht der Prozesse. - Verwenden Sie
netstat -tulnpoderss -tulnp, um Dienste zu finden, die auf bestimmten Ports laufen.
FAQ (Häufig gestellte Fragen)
1. Wie überprüfe ich, ob ein Dienst unter Linux läuft?
Je nach Linux-Distribution können Sie verschiedene Methoden verwenden:
- Für systemd-basierte Systeme:
systemctl status <service-name> - Für SysVinit-basierte Systeme:
service <service-name> status - Mit ps und grep:
ps aux | grep <service-name>
2. Wie liste ich alle laufenden Dienste auf?
- Für systemd-basierte Systeme:
systemctl list-units --type=service --state=running - Für SysVinit-basierte Systeme:
service --status-all - Mit dem Befehl
ps:ps aux
3. Wie kann ich überprüfen, ob ein Dienst beim Systemstart gestartet wird?
- Für systemd:
systemctl is-enabled <service-name> - Für SysVinit (RHEL-basierte Systeme):
chkconfig --list <service-name>
4. Wie starte ich einen Dienst neu?
- Für systemd-basierte Systeme:
sudo systemctl restart <service-name> - Für SysVinit-basierte Systeme:
sudo service <service-name> restart
5. Wie stoppe oder deaktiviere ich einen Dienst?
- Um einen Dienst vorübergehend zu stoppen:
sudo systemctl stop <service-name> - Um zu verhindern, dass ein Dienst beim Systemstart startet:
sudo systemctl disable <service-name>
6. Wie finde ich heraus, welcher Dienst einen bestimmten Port verwendet?
Sie können netstat oder ss verwenden, um Dienste zu finden, die auf einem bestimmten Port laufen:
netstat -tulnp | grep :80
oder
ss -tulnp | grep :80
7. Was tun, wenn systemctl nicht gefunden wird?
Wenn Sie eine Fehlermeldung wie command not found: systemctl erhalten, bedeutet das, dass Ihr System möglicherweise kein systemd verwendet. Versuchen Sie stattdessen:
service --status-all
oder
ps aux | grep <service-name>
8. Wie liste ich fehlgeschlagene Dienste auf?
Führen Sie für systemd-basierte Systeme aus:
systemctl list-units --type=service --state=failed
9. Wie aktiviere ich die Protokollierung für einen bestimmten Dienst?
Um die Protokolle eines von systemd verwalteten Dienstes zu überprüfen, verwenden Sie:
journalctl -u <service-name>
Um die Protokolle in Echtzeit anzuzeigen:
journalctl -u <service-name> -f
10. Kann ich top oder htop verwenden, um laufende Dienste zu sehen?
Ja! top und htop bieten eine Live-Ansicht der laufenden Prozesse:
topverwenden:tophtopverwenden (interaktiv und benutzerfreundlich):
(Installieren Sie es mithtopsudo apt install htopodersudo yum install htop, falls es nicht verfügbar ist.)
