Login
Newsletter
Werbung

So, 10. Juli 2005, 00:00

Freundliche Helfer

Daemonen und SysvInit in Linux

Dieser Artikel beschreibt Daemonen und SysvInit in Linux.

Vorwort

Früher oder später kommt jeder Linux-Anwender einmal auf die Idee, den Befehl ps ax einzugeben. Möglicherweise zum ersten Mal stellt man nun fest, daß, bisher unbemerkt, eine ganze Reihe von Prozessen laufen. Was tun all diese Prozesse da? wird die nächste Frage sein. Nun, einige davon sind Kernel-Threads, also kernel-interne Prozesse, auf die der Anwender keinen Einfluß hat. Einige andere Prozesse sind die Programme, die das System oder der Anwender gestartet haben, beispielsweise X-Server, getty, Window-Manager oder Shell. Der Rest besteht zum Großteil aus Daemonen, und um diese wird sich dieser Artikel drehen.

Auch die gerade erwähnten Kernel-Threads kann man in gewissem Sinne als Daemonen bezeichnen. Jedoch gibt es nur wenig Möglichkeiten, diese zu beeinflussen (meist über das /proc-Dateisystem, ab Kernel 2.6 bevorzugt über das /sys-Dateisystem), daher klammern wir die Kernel-Threads in diesem Artikel aus.

Definition

Historisches

Der Name Daemon stammt von einem frühen Timesharing-Betriebssystem namens CTSS, das in den 1960ern, noch einige Jahre vor UNIX, entstand. Unter ITS, einem anderen Timesharing-System dieser Zeit, wurden entsprechende Programme Dragons (Drachen) genannt.

Wie die Drachen bezeichnen auch die Daemonen mystische Wesen. Sie sind freundliche Helfer der Menschen. Durch die Schreibweise mit ae unterscheiden sie sich von den bösen Dämonen (engl. demons).

Der spätere Versuch, das Wort Daemon als Abkürzung für Disk And Execution Monitor zu deuten, kann nur einem kranken Hirn entsprungen sein und hat mit der tatsächlichen Entstehungsgeschichte nichts zu tun.

Eigenschaften von Daemonen

Wie kann man einen Daemon erkennen, wenn man einem begegnet? Um diese Frage zu beantworten, ziehen wir das immer noch herausragende Buch "Programmierung in der Unix-Umgebung" von W. Richard Stevens [1] zu Rate (wer das Original bevorzugt, hat sicher schon "Advanced Programming in the UNIX Environment" im Regal stehen). Danach ist ein Daemon ein Prozeß mit einer hohen Lebensdauer, der oft schon beim Systemstart gestartet und erst beim Shutdown beendet wird. Nun ist natürlich ein Programm, das von einem User gestartet wird und einen Monat lang läuft (SETI) noch lange kein Daemon. Die Definition ist also noch nicht hinreichend. Es müssen noch weitere typische Eigenschaften von Daemonen erwähnt werden: Sie besitzen kein steuerndes Terminal, daher können sie Fehler- und andere Meldungen nicht auf den Bildschirm schreiben, sondern nur im Syslog oder eigenen Logdateien unterbringen. Außerdem erledigen sie meist eine Aufgabe für andere Programme, wobei der Daemon oft als Server und die anderen Programme als Clients agieren. Daemonen sind also oft mit bestimmten Diensten (Services) assoziiert und werden dann mit diesen gleichgesetzt. Man kann auch sagen, daß ein Daemon einen Dienst implementiert, wobei es natürlich unterschiedliche Implementierungen desselben Dienstes geben kann (man betrachte nur einmal die Anzahl der frei erhältlichen FTP- oder POP3-Server). Wenn man einen Daemon startet, spricht man oft auch davon, daß man einen Dienst gestartet hat.

Beim Einsatz als Server setzen die meisten Daemonen ein Netzwerk voraus, wobei aber nicht unbedingt ein realer Netzwerkanschluß vorhanden sein muß. Das Loopback-Netzwerk oder Unix Domain Sockets genügen dem Server meist schon.

Programmtechnisch unterscheiden sich Daemonen nur durch eine Handvoll Codezeilen von normalen Programmen. Diese haben hauptsächlich den Zweck, den Prozeß vom Terminal abzukoppeln. Ein Daemon "schiebt" sich also beim Start meist automatisch in den Hintergrund.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung