Zuletzt aktualisiert am 04.12.2025 5 Minuten Lesezeit

Daemon (Hintergrundprozess)

Ein Daemon (auch Daemonprozess oder Hintergrundprozess) ist ein Programm, das im Hintergrund eines Betriebssystems laeuft und Dienste bereitstellt, ohne dass ein Benutzer direkt damit interagiert. Der Begriff stammt aus der Unix-Welt und beschreibt Prozesse, die automatisch starten und kontinuierlich Aufgaben erledigen - etwa das Verarbeiten von Netzwerkanfragen, das Ausfuehren geplanter Aufgaben oder die Systemueberwachung.

Du erkennst Daemons in Unix-basierten Systemen oft an der Endung d im Prozessnamen: sshd (SSH-Daemon), httpd (HTTP-Daemon), crond (Cron-Daemon) oder systemd (System-Daemon). Diese Konvention macht es einfach, Hintergrundprozesse auf einen Blick zu identifizieren.

Ursprung und Namensherkunft

Der Begriff Daemon wurde erstmals in den 1960er Jahren am MIT fuer das Project MAC verwendet. Die Entwickler liessen sich von Maxwells Daemon inspirieren - einem Gedankenexperiment aus der Thermodynamik, bei dem ein imaginaeres Wesen im Hintergrund arbeitet und Molekuele sortiert.

Genau wie Maxwells Daemon arbeiten Computer-Daemons unsichtbar im Hintergrund. Sie warten auf bestimmte Ereignisse, reagieren automatisch und verrichten ihre Arbeit, ohne dass du etwas davon mitbekommst. Das BSD-Maskottchen, der kleine Daemon mit dem Dreizack, symbolisiert dieses Konzept bis heute in der Unix-Welt.

Funktionsweise eines Daemons

Ein Daemon unterscheidet sich von normalen Programmen durch seine spezielle Ausfuehrungsweise. Waehrend ein regulaeres Programm an ein Terminal gebunden ist und endet, wenn du das Terminal schliesst, loest sich ein Daemon von seinem Elternprozess und laeuft voellig unabhaengig weiter.

Technische Initialisierung

Die klassische Erstellung eines Daemons folgt einem definierten Muster, das als Daemonizing bezeichnet wird. Dabei durchlaeuft der Prozess mehrere Schritte, um sich vollstaendig vom Terminal und Benutzerkontext zu loesen.

  1. Fork: Der Prozess erstellt eine Kopie von sich selbst mit fork()
  2. Elternprozess beenden: Der urspruengliche Prozess beendet sich
  3. Neue Session: Der Kind-Prozess erstellt mit setsid() eine neue Session
  4. Arbeitsverzeichnis: Wechsel zum Root-Verzeichnis /
  5. Datei-Deskriptoren: Standard-Ein-/Ausgabe auf /dev/null umleiten
  6. Endlosschleife: Der Daemon wartet auf Ereignisse oder fuehrt periodische Aufgaben aus

Durch diese Schritte wird der Daemon zum Waisenkind (Orphan Process), das automatisch vom init-Prozess (PID 1) adoptiert wird. Damit ist sichergestellt, dass der Daemon weiterlaeuft, selbst wenn sich der Benutzer abmeldet.

Init-Systeme und Daemon-Verwaltung

Die Art und Weise, wie Daemons gestartet und verwaltet werden, hat sich im Laufe der Zeit stark veraendert. Frueher verwendeten Unix-Systeme das traditionelle SysV-Init, heute dominiert systemd die meisten Linux-Distributionen.

SysV-Init (traditionell)

Das System V Init war jahrzehntelang der Standard. Daemons wurden durch Shell-Skripte in /etc/init.d/ gesteuert. Diese Skripte mussten Befehle wie start, stop und restart implementieren. Der grosse Nachteil: Dienste wurden sequentiell gestartet, was den Boot-Vorgang verlangsamt.

systemd (modern)

systemd hat das Init-System grundlegend modernisiert und ist heute bei Ubuntu, Fedora, Debian, RHEL und den meisten anderen Linux-Distributionen der Standard. Es startet Dienste parallel, beschleunigt den Boot-Vorgang erheblich und bietet eine einheitliche Konfiguration ueber Unit-Dateien.

Mit systemd wird das klassische Daemonizing ueberflluessig. Der Dienst kann als normales Programm im Vordergrund laufen - systemd uebernimmt die Prozesssteuerung, Logging und Neustart bei Abstuerzen automatisch.

# Daemon-Status pruefen
systemctl status sshd

# Daemon starten
sudo systemctl start nginx

# Daemon beim Systemstart aktivieren
sudo systemctl enable nginx

# Alle aktiven Dienste anzeigen
systemctl list-units --type=service --state=running

Wichtige Daemons im Ueberblick

Auf jedem Linux- oder Unix-System laufen zahlreiche Daemons, die essenzielle Systemfunktionen bereitstellen. Hier sind die wichtigsten, die du als angehender Fachinformatiker fuer Systemintegration kennen solltest:

Daemon Vollstaendiger Name Aufgabe
sshd Secure Shell Daemon Ermoeglicht verschluesselte Remote-Verbindungen
httpd / nginx HTTP Daemon Stellt Webseiten bereit (Webserver)
crond Cron Daemon Fuehrt geplante Aufgaben zeitgesteuert aus
systemd System Daemon Verwaltet alle anderen Dienste (PID 1)
syslogd / rsyslogd System Log Daemon Sammelt und speichert System-Logs
dhcpd DHCP Daemon Vergibt IP-Adressen im Netzwerk
ntpd / chronyd NTP Daemon Synchronisiert die Systemzeit
cupsd CUPS Daemon Verwaltet Drucker und Druckauftraege

Daemons unter Windows: Dienste

Das Windows-Aequivalent zu Unix-Daemons sind Windows-Dienste (Services). Sie laufen ebenfalls im Hintergrund, werden aber anders verwaltet. Statt systemctl verwendest du die Dienstverwaltung (services.msc) oder PowerShell-Befehle wie Get-Service und Start-Service.

Typische Windows-Dienste sind der Windows Update Service, der Print Spooler oder der Windows Defender. Das Konzept ist identisch: Programme laufen permanent im Hintergrund und stellen Systemfunktionen bereit.

Praxisbeispiel: Eigenen Daemon mit systemd erstellen

Um einen eigenen Dienst unter Linux zu erstellen, legst du eine Unit-Datei im Verzeichnis /etc/systemd/system/ an. Das folgende Beispiel zeigt einen einfachen Daemon, der ein Python-Skript als Hintergrundprozess ausfuehrt:

# /etc/systemd/system/mein-daemon.service
[Unit]
Description=Mein eigener Daemon
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/mein-daemon
ExecStart=/usr/bin/python3 /opt/mein-daemon/app.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Nach dem Erstellen der Datei aktivierst du den Daemon mit sudo systemctl daemon-reload und sudo systemctl enable --now mein-daemon. Der Dienst startet dann automatisch bei jedem Systemstart und wird bei Abstuerzen neu gestartet.

Daemon vs. Prozess: Der Unterschied

Nicht jeder Prozess ist ein Daemon. Der entscheidende Unterschied liegt in der Bindung an das Terminal und der Lebensdauer:

Merkmal Regulaerer Prozess Daemon
Terminal An Terminal gebunden Kein kontrollierendes Terminal
Lebensdauer Endet mit Session Laeuft bis Systemende
Interaktion Direkte Benutzerinteraktion Keine direkte Interaktion
Start Manuell durch Benutzer Automatisch beim Systemstart
Elternprozess Shell oder anderer Prozess init/systemd (PID 1)

Ein Daemon ist also ein spezialisierter Prozess, der fuer den Dauerbetrieb im Hintergrund optimiert wurde. Er arbeitet autonom, wartet auf Anfragen oder fuehrt zeitgesteuerte Aufgaben aus - ohne dass jemand aktiv am System angemeldet sein muss.

Relevanz in der IT-Praxis

Daemons bilden das Rueckgrat jeder Server-Infrastruktur. Ob Webserver, Datenbankserver oder Mail-Server - hinter jedem dieser Dienste steckt ein Daemon. Als Fachinformatiker fuer Systemintegration wirst du regelmaessig mit der Konfiguration und Fehlersuche bei Daemons arbeiten.

Auch fuer Fachinformatiker fuer Anwendungsentwicklung ist das Verstaendnis von Daemons wichtig: Backend-Anwendungen laufen haeufig als Daemon, und Deployment-Prozesse erfordern das Erstellen von systemd-Unit-Dateien oder Docker-Containern, die ihrerseits Daemon-Prozesse verwalten.

Quellen und weiterfuehrende Links