Wie man alle laufenden Daemons in Linux auflistet
Ein Daemon ist ein Hintergrundprozess, der ohne direkte Benutzerinteraktion läuft. Linux-Systeme verwenden verschiedene Init-Systeme (Initialisierungssysteme), um Daemons zu verwalten. Die gebräuchlichsten sind Systemd, SysVinit und OpenRC. In diesem Tutorial werden wir verschiedene Möglichkeiten erklären, wie man alle laufenden Daemons auflistet für jedes Init-System in Linux.
Verstehen von Daemons, Prozessen und Init-Systemen
Bevor wir auf das Thema eingehen, erlauben Sie mir, kurz die folgenden wichtigen Fachbegriffe zu erklären, da sie wichtig sind, um den Rest des Tutorials zu verstehen.
- Daemon
- Prozess
- Init-System.
Wenn Sie Dienste verwalten möchten (wie das Starten oder Stoppen eines Webservers), müssen Sie Daemons und das Init-System verstehen.
Wenn Sie Ihr System überwachen oder Probleme beheben möchten, müssen Sie Prozesse verstehen.
1. Was ist ein Daemon?
Ein Daemon ist ein Hintergrundprozess, der kontinuierlich auf einem Linux-System läuft, normalerweise ohne direkte Benutzerinteraktion.
Diensteprogramme (Daemons) stellen dem System oder anderen Programmen wesentliche Dienste zur Verfügung. Zum Beispiel:
sshdverwaltet SSH-Verbindungen.cronplant Aufgaben.apache2dient Webseiten.
Dienste starten typischerweise beim Hochfahren des Systems und laufen weiter, bis das System heruntergefahren wird.
Beispiel:
Wenn Sie einen Webserver verwenden, läuft der apache2- oder nginx-Daemon im Hintergrund, um Webanfragen zu bearbeiten.
Fun-Fact: Daemon-Namen enden oft auf "d" (wie
sshd,crond).
2. Was ist ein Prozess?
Ein Prozess ist jedes Programm oder jede Aufgabe, die derzeit auf Ihrem System ausgeführt wird.
Arten von Prozessen:
- Vordergrundprozesse: Diese werden vom Benutzer gestartet und interagieren direkt mit dem Benutzer (z. B. ein Webbrowser oder Texteditor).
- Hintergrundprozesse: Diese laufen ohne Benutzerinteraktion (z. B. ein Dateidownload oder Systemupdate).
- Daemons: Eine spezielle Art von Hintergrundprozess, der Systemdienste bereitstellt.
Sie können alle Prozesse mit Befehlen wie ps oder top auflisten.
ps auxSie können die PID eines bestimmten Prozesses (z. B. nano) mit dem Befehl überprüfen:
ps aux | grep nanoBeispiel:
Wenn Sie ein Terminal öffnen, startet ein bash-Prozess. Wenn Sie einen Befehl wie ls ausführen, wird ein neuer Prozess erstellt, um diesen Befehl auszuführen.
Verwandte Lektüre:
- So finden Sie die Elternprozess-ID (PPID) in Linux: Eine Schritt-für-Schritt-Anleitung
- So zeigen Sie Prozessinformationen mithilfe von Procs unter Linux an
- Wie man herausfindet, wie lange ein Prozess unter Linux läuft
- So ändern Sie die Priorität eines Prozesses in Linux
- So setzen Sie einen Prozess in Linux aus und setzen ihn später fort
- Reptyr – Einen laufenden Prozess von einem Terminal auf ein anderes verschieben, ohne ihn zu schließen
3. Was ist ein Init-System?
Das Init-System ist der erste Prozess, der startet, wenn ein Linux-System hochfährt (mit der Prozess-ID 1 oder PID 1). Es verwaltet alle anderen Prozesse und Dienste auf dem System.
Das Init-System ist verantwortlich für:
- Systemdienste (Daemons) starten und stoppen.
- Verwaltung von Abhängigkeiten zwischen Diensten.
- Umgang mit Systemherunterfahren und Neustart.
Einige der üblichen Init-Systeme sind:
- Systemd: Das am weitesten verbreitete Init-System in modernen Linux-Distributionen (z. B. Ubuntu, Fedora, Debian). Befehle zur Verwaltung von systemd sind
systemctlundjournalctl. - SysVinit: Ein älteres Init-System, das in traditionellen Linux-Distributionen verwendet wird. Befehle zum Verwalten von SysVinit sind
service,/etc/init.d/. - OpenRC: Ein modernes, flexibles und leichtgewichtiges Init-System, das oft in Gentoo, Alpine Linux und Artix Linux verwendet wird.
- Upstart: Ein Übergangs-Init-System, das in einigen älteren Ubuntu-Versionen verwendet wurde. Der Befehl zur Verwaltung ist
initctl. Es ist jetzt veraltet, da die meisten aktuellen Ubuntu-Distributionen zu systemd übergegangen sind.
Beispiel:
Wenn Sie Ihr System starten, startet das Init-System wesentliche Daemons wie sshd (für SSH) und cron (für geplante Aufgaben).
Das Init-System startet und verwaltet Daemons (Hintergrunddienste). Sowohl Daemons als auch normale Programme (wie ein Webbrowser) sind Arten von Prozessen. Sie können alle Prozesse mit Werkzeugen wie ps auflisten, aber Sie benötigen init-spezifische Befehle (z. B. systemctl), um Daemons zu verwalten.
Um Ihr Init-System zu überprüfen, führen Sie aus:
ps --pid 1Beispielausgabe:
PID TTY TIME CMD
1 ? 00:00:00 systemd
Das bedeutet, dass das System Systemd verwendet.
Zusammenfassungstabelle
| Begriff | Definition | Beispiel |
|---|---|---|
| Daemon | Ein Hintergrundprozess, der Systemdienste bereitstellt. | sshd, cron, apache2. |
| Prozess | Jedes laufende Programm oder jede Aufgabe auf dem System. | bash, ls, sshd. |
| Init-System | Der erste Prozess, der beim Starten beginnt und alle anderen Prozesse/Dienste verwaltet. | systemd, SysVinit, OpenRC, Upstart. |
Prozesse vs. Daemons
Wie ich bereits erwähnte, ist ein Prozess jedes laufende Programm oder jede Aufgabe auf Ihrem System (wie ein Texteditor, Webbrowser oder Hintergrunddienst).
Ein Daemon ist eine spezielle Art von Prozess, der im Hintergrund ohne Benutzerinteraktion läuft und normalerweise Systemdienste bereitstellt (wie die Verwaltung von Netzwerkverbindungen, das Protokollieren oder das Planen von Aufgaben).
Hier sind die Hauptunterschiede zwischen Prozessen und Daemons:
| Funktion | Prozess | Daemon |
|---|---|---|
| Läuft im Hintergrund? | Nein (läuft normalerweise im Vordergrund) | Ja |
| Am Terminal angeschlossen? | Ja (wenn vom Benutzer gestartet) | Nein (vom Terminal getrennt) |
| Beispiel | firefox, nano, htop | sshd, cron, systemd-journald |
| Verwaltet von | Der Benutzer oder das System | Init-System (systemd, SysVinit, OpenRC) |
Alles klar. Ich hoffe, Sie haben jetzt ein gutes Verständnis von Daemons, Prozessen und Init-Systemen. Lassen Sie uns nun lernen, wie man Daemons für jedes Init-System auflistet.
Zuerst lassen Sie uns mit Systemd beginnen.
1. Alle laufenden Daemons mit Systemd auflisten
Systemd verwendet Services, um Daemons zu verwalten. Systemd ist das Standard-Init-System in vielen modernen Linux-Distributionen wie Arch Linux, Debian, Fedora, RHEL und Ubuntu.
Sie können laufende Dienste überprüfen mit:
systemctl list-units --type=service --state=runningErklärung:
systemctl→ Der Hauptbefehl zur Verwaltung von Diensten in Systemd.list-units→ Listet aktive Systemeinheiten auf.--type=service→ Filtert die Ausgabe, um nur Dienste anzuzeigen.--state=running→ Zeigt nur derzeit laufende Dienste an.
Beispielausgabe:
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
bluetooth.service loaded active running Bluetooth service
bolt.service loaded active running Thunderbolt system service
colord.service loaded active running Manage, Install and Generate Color Profiles
cron.service loaded active running Regular background program processing daemon
cups-browsed.service loaded active running Make remote CUPS printers available locally
[...] 2. Alle laufenden Daemons mit SysVinit anzeigen
SysVinit verwendet Init-Skripte, die in /etc/init.d/ gespeichert sind. Es wird in älteren Versionen von Linux-Distributionen wie Debian 7, CentOS 6 verwendet.
Um laufende Dienste aufzulisten:
service --status-all | grep "+"Erklärung:
service --status-all→ Listet alle Dienste und deren Status auf.grep "+"→ Filtert nur laufende Dienste heraus (Dienste mit[ + ]in der Ausgabe).
Beispielausgabe:
[ + ] cron
[ + ] networking
[ - ] apache2Hier laufen cron und networking, während apache2 gestoppt ist.
3. Laufende Daemons mit OpenRC anzeigen
OpenRC verwaltet Dienste unter Verwendung von rc-status in einigen Linux-Distributionen wie Alpine Linux und Gentoo.
Um aktive Daemons aufzulisten:
rc-statusBeispielausgabe:
Runlevel: default
sshd [ started ]
crond [ started ]Spickzettel zum Auflisten laufender Daemons in Linux
| Init-System | Befehl zum Auflisten laufender Daemons |
|---|---|
| Systemd | systemctl list-units --type=service --state=running |
| SysVinit | service --status-all |
| OpenRC | rc-status |
Fazit
In diesem Tutorial haben wir die Konzepte von Prozessen, Daemons und Init-Systemen sowie die wesentlichen Unterschiede zwischen Prozessen und Daemons besprochen, um ihre Rollen in einem Linux-System zu verdeutlichen.
Wir haben auch behandelt, wie man laufende Daemons auflistet über verschiedene Init-Systeme hinweg, wie Systemd, SysVinit und Upstart, zusammen mit praktischen Beispielen.
Wir hoffen, dass dieser Leitfaden hilfreich gewesen ist!
