Website-Suche

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.

  1. Daemon
  2. Prozess
  3. 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:

  • sshd verwaltet SSH-Verbindungen.
  • cron plant Aufgaben.
  • apache2 dient 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 aux

Sie können die PID eines bestimmten Prozesses (z. B. nano) mit dem Befehl überprüfen:

ps aux | grep nano

Beispiel:

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 systemctl und journalctl.
  • 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 1

Beispielausgabe:

PID TTY      TIME     CMD
1 ?        00:00:00 systemd

Das bedeutet, dass das System Systemd verwendet.

Zusammenfassungstabelle

BegriffDefinitionBeispiel
DaemonEin Hintergrundprozess, der Systemdienste bereitstellt.sshd, cron, apache2.
ProzessJedes laufende Programm oder jede Aufgabe auf dem System.bash, ls, sshd.
Init-SystemDer 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:

FunktionProzessDaemon
Läuft im Hintergrund?Nein (läuft normalerweise im Vordergrund)Ja
Am Terminal angeschlossen?Ja (wenn vom Benutzer gestartet)Nein (vom Terminal getrennt)
Beispielfirefox, nano, htopsshd, cron, systemd-journald
Verwaltet vonDer Benutzer oder das SystemInit-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=running

Erklä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
[...]  

Alle laufenden Daemons mit dem systemd-Befehl unter Linux auflisten

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
 [ - ]  apache2

Hier 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-status

Beispielausgabe:

Runlevel: default
 sshd                                                           [  started  ]
 crond                                                          [  started  ]

Spickzettel zum Auflisten laufender Daemons in Linux

Init-SystemBefehl zum Auflisten laufender Daemons
Systemdsystemctl list-units --type=service --state=running
SysVinitservice --status-all
OpenRCrc-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!