Daemon
Als Daemon [ˈdiːmən] oder Dämon (auch häufig in der Schreibweise Demon) bezeichnet man
unter Unix oder
unixartigen Systemen
einen Prozess, der
im Hintergrund abläuft und
bestimmte Dienste zur Verfügung stellt.
Benutzerinteraktionen
finden hierbei nur auf indirektem Weg statt, zum Beispiel über
Signale,
Pipes und vor
allem (Netzwerk-)
Sockets.
Der Begriff Daemon wird auch als Abkürzung von disk and execution monitor interpretiert,
was jedoch ein Backronym ist.
Ursprünglich wurde der Begriff von den Programmierern des
Projekts MAC des MIT geprägt.
Sie übernahmen den Namen
vom maxwellschen Dämon,
einem imaginären Wesen aus einem Gedankenexperiment, das ständig im Hintergrund arbeitet und
Moleküle sortiert. Unix-Systeme übernahmen diese Terminologie. Maxwells Dämon steht im Einklang mit der Interpretation der
griechischen Mythologie eines Dämons als übernatürliches Wesen, das im Hintergrund arbeitet, ohne besondere Neigung zum Guten oder Bösen.
Bei Windows heißen die entsprechenden Programme services oder Systemdienste.
Aufruf und Funktionsweise
Normalerweise werden Daemons nicht durch Benutzerinteraktion gestartet, sondern automatisch beim Wechsel in ein anderes Runlevel bzw. beim Systemstart. Dadurch stellen Daemons einen wesentlichen Anteil des Bootprozesses dar, da bei den meisten Unix-Derivaten die wesentliche Anwendungslogik des Betriebssystems im Userspace und damit in den Daemons abläuft. Typische Daemon-Programme sind bei Unix-Betriebssystemen daher nicht nur Server- Prozesse wie Netzwerkdienste, E-Mail-Server, Datenbankserver und Druckerserver, sondern auch Prozesse, die die Hardwarekonfiguration bzw. -Überwachung vornehmen, wie Sounddaemons oder Wechselmedienverwaltungsdaemons. Auch periodische Aufgaben oder zu festgelegten Zeiten anfallende Aufgaben werden mithilfe von Daemons realisiert.
Daemons können jedoch auch wie normale Prozesse in einer Shell durch einen Benutzer gestartet werden. Anschließend forken diese Prozesse und erstellen auf diese Weise einen Prozess, der mit der aufrufenden Shell nicht mehr verbunden ist und damit ein direkter Kindprozess des Hauptprozesses init wird. In der Praxis werden viele Daemons so konstruiert, dass sie per Kommandozeilenparameter wahlweise sowohl im Hintergrund (detached) laufen können als auch im Vordergrund, d.h. im Kontext der Shell, verbleiben können. Oft werden Logausgaben dann auf der Standardausgabe ausgegeben.
Beispiele
Um ihren Daemon-Charakter zu bezeichnen, hat der Name vieler solcher Programme ein angehängtes „d“, zum Beispiel syslogd oder httpd.
Programm- name |
Beschreibung | Interaktion |
---|---|---|
cron | Startet andere Programme zu festgelegten Zeiten. | Konfiguration über lokales CLI-Programm crontab |
atd | Startet Programme nach einer festgelegten Zeitspanne. | Konfiguration über lokales CLI-Programm at |
syslogd | Nimmt Meldungen von Programmen entgegen und schreibt diese in Dateien oder leitet sie an einen anderen syslogd (z.B.B. auf einem zentralen Logserver) weiter. | Benutzung durch Systemroutinen der C-Standard-Bibliothek wie Syslog, Steuerung durch Signale |
sendmail | Ein Mail Transfer Agent, der per SMTP E-Mails über Netzwerk sendet | Benutzung durch beliebiges (SMTP-fähiges) E-Mail-Programm über Netzwerk |
lpd | Nimmt eingehende Daten entgegen, um sie auf einem angeschlossenen Drucker auszudrucken. | Benutzung durch beliebiges Programm, welches das LPD-Protokoll unterstützt |
cupsd | Im Vergleich zu lpd ein leistungsstarker Druckerserver auf Unix-Systemen | Benutzung und Konfiguration durch die Programmbibliothek libcups, Domain-Sockets oder das IPP; Steuerung und Konfiguration über ein Web-Frontend oder lokale CLI-Programme |
httpd | Ein httpd ist ein Synonym für einen Webserver, der auf Anfragen im HTTP-Protokoll antwortet. | Benutzung durch beliebigen Webbrowser |
inetd | Der Internetdaemon kann auf mehreren TCP-Ports Verbindungen entgegennehmen und an spezielle Programme weitergeben, die erst bei Verbindungsaufbau gestartet werden, um Ressourcen zu schonen. | Prozess-Signale zur Steuerung des inetd; verschiedenste Clients für die zur Verfügung gestellten Dienste |
udev | Daemon zum dynamischen Erzeugen von Gerätedateien unter Linux | Steuerung durch lokale Hilfsprogramme wie udevcontrol oder udevinfo |
Der Daemon als Logo
In Anspielung auf einen Dämonen haben sich die BSD-Unix-Derivate einen solchen zum Logo gemacht. Die Figur enthält einige Metaphorik, die Daemons charakterisiert. Sie wurde als Logo für diese Unix-Derivate gewählt, weil Daemons eine zentrale Betriebssystemkomponente darstellen.
Auch die BSD-Derivate FreeBSD und NetBSD hatten den Daemon ursprünglich übernommen, mittlerweile sind alle Derivate jedoch auf ein alternatives oder abgewandeltes Logo umgestiegen.
Basierend auf einem Artikel in: Wikipedia.de Seite zurück© biancahoegel.de
Datum der letzten Änderung: Jena, den: 13.08. 2022