Linux Jargon Buster: Was sind Daemons in Linux?

Dämonen arbeiten hart, also musst du es nicht.

Stellen Sie sich vor, Sie schreiben einen Artikel, eine Webseite oder ein Buch. Ihre Absicht ist genau das zu tun – schreiben. Es ist ziemlich schön, Drucker- und Netzwerkdienste nicht manuell starten und dann den ganzen Tag überwachen zu müssen, um sicherzustellen, dass sie richtig funktionieren.

Dafür können wir Daemons danken – sie erledigen diese Art von Arbeit für uns.

Was ist ein Daemon unter Linux?

Ein Daemon (normalerweise ausgesprochen als: day-mon, aber manchmal als Reime ausgesprochen diamond) ist ein Programm mit einem einzigartigen Zweck. Dabei handelt es sich um Hilfsprogramme, die im Hintergrund laufen, um bestimmte Subsysteme zu überwachen und zu betreuen, um sicherzustellen, dass das Betriebssystem ordnungsgemäß ausgeführt wird. Ein Drucker-Daemon überwacht und kümmert sich um die Druckdienste. Ein Netzwerk-Daemon überwacht und verwaltet die Netzwerkkommunikation und so weiter.

Nachdem ich die Aussprache von Daemon durchgegangen bin, füge ich hinzu, dass ich mich nicht beschweren werde, wenn Sie es als Dämon aussprechen möchten.

Für diejenigen, die aus der Windows-Welt zu Linux kommen, sind Daemons als Dienste bekannt. Für Mac-Benutzer hat der Begriff Dienste eine andere Bedeutung. Das Betriebssystem des Mac ist wirklich UNIX, also verwendet es Daemons. Der Begriff Dienste wird verwendet, jedoch nur zur Kennzeichnung von Software, die unter dem Services Speisekarte.

Daemons führen bestimmte Aktionen zu vordefinierten Zeiten oder als Reaktion auf bestimmte Ereignisse aus. Es gibt viele Daemons, die auf einem Linux-System laufen, von denen jeder speziell dafür entwickelt wurde, seinen eigenen kleinen Teil des Systems zu überwachen, und da sie nicht der direkten Kontrolle eines Benutzers unterliegen, sind sie praktisch unsichtbar, aber unerlässlich. Da Dämonen den Großteil ihrer Arbeit im Hintergrund erledigen, können sie ein wenig mysteriös erscheinen und sind daher möglicherweise schwer zu identifizieren und was sie tatsächlich tun.

Welche Dämonen laufen auf Ihrem Computer?

Um einen Daemon zu identifizieren, suchen Sie nach einem Prozess, der mit dem Buchstaben d endet. Es ist eine allgemeine Linux-Regel, dass die Namen von Daemons auf diese Weise enden.

Es gibt viele Möglichkeiten, einen Blick auf einen laufenden Daemon zu erhaschen. Sie können in Prozessauflistungen eingesehen werden durch ps, top, oder htop. Dies sind an sich schon nützliche Programme – sie haben einen bestimmten Zweck, aber um alle Daemons zu sehen, die auf Ihrem Computer laufen, ist die pstree Befehl passt besser zu unserer Diskussion.

Der pstree Der Befehl ist ein praktisches kleines Dienstprogramm, das die derzeit auf Ihrem System ausgeführten Prozesse anzeigt und sie in einem Baumdiagramm anzeigt. Öffnen Sie ein Terminal und geben Sie diesen Befehl ein:

pstree

Sie sehen eine vollständige Liste aller laufenden Prozesse. Sie wissen vielleicht nicht, was einige von ihnen sind oder was sie tun, sie sind aufgelistet. Der pstree Die Ausgabe ist eine ziemlich gute Illustration dafür, was mit Ihrer Maschine vor sich geht. Es ist viel los!

daemon – pstree-Lauf abgeschlossen

Wenn man sich den Screenshot ansieht, sind hier einige Daemons zu sehen: udisksd, gvfsd, System, Einloggen und einige andere.

Unsere Prozessliste war so lang, dass die Auflistung nicht in ein einzelnes Terminalfenster passt, aber wir können mit der Maus oder den Cursortasten nach oben scrollen:

daemon – oberer teil von pstree

Laichende Dämonen

Bild nur zu Darstellungszwecken

Auch hier ist ein Daemon ein Prozess, der im Hintergrund läuft und normalerweise außerhalb der Kontrolle des Benutzers liegt. Es wird gesagt, dass ein Daemon kein Kontrollterminal hat.

Ein Prozess ist ein laufendes Programm. Zu einem bestimmten Zeitpunkt kann er entweder laufen, schlafen oder Zombie sein (ein Prozess, der seine Aufgabe abgeschlossen hat, aber darauf wartet, dass sein übergeordneter Prozess den Rückgabewert akzeptiert).

Unter Linux gibt es drei Arten von Prozessen: Interaktiv, Batch und Daemon.

Interaktive Prozesse sind solche, die von einem Benutzer an der Befehlszeile ausgeführt werden, und werden als interaktive Prozesse bezeichnet.

Stapelprozesse sind Prozesse, die nicht der Befehlszeile zugeordnet sind und aus einer Liste von Prozessen angezeigt werden. Stellen Sie sich diese als „Aufgabengruppen“ vor. Diese sind am besten zu Zeiten, in denen die Systemauslastung gering ist. System-Backups, für example, werden normalerweise nachts ausgeführt, da die Arbeiter tagsüber das System nicht verwenden. Als ich Vollzeit-Systemadministrator war, habe ich nachts oft Inventuren der Festplattennutzung, Skripte zur Analyse des Systemverhaltens usw. ausgeführt.

Interaktive Prozesse und Batch-Jobs sind keine Daemons, obwohl sie im Hintergrund ausgeführt werden und einige Überwachungsaufgaben übernehmen können. Der Schlüssel ist, dass diese beiden Arten von Prozessen menschliche Eingaben durch eine Art Terminalsteuerung beinhalten. Daemons brauchen keine Person, um sie zu starten.

Wir wissen, dass ein Daemon ein Computerprogramm ist, das als Hintergrundprozess läuft und nicht unter der direkten Kontrolle eines interaktiven Benutzers steht. Wenn der Systemstart abgeschlossen ist, beginnt der Systeminitialisierungsprozess mit der Erzeugung (Erzeugung) von Daemons durch eine Methode namens Forking, wodurch kein Terminal erforderlich ist (dies ist mit keinem kontrollierenden Terminal gemeint).

Ich werde nicht auf die vollständigen Details der Prozessverzweigung eingehen, aber hoffentlich kann ich mich kurz genug fassen, um ein paar Hintergrundinformationen zu zeigen, um zu beschreiben, was getan wird. Während es andere Methoden zum Erstellen von Prozessen gibt, besteht die Methode zum Erstellen eines Prozesses unter Linux traditionell darin, eine Kopie eines vorhandenen Prozesses zu erstellen, um einen untergeordneten Prozess zu erstellen. Anschließend wird ein exec-Systemaufruf zum Starten eines anderen Programms ausgeführt.

Der Begriff Gabel ist übrigens nicht willkürlich. Es hat seinen Namen von der Programmiersprache C. Eine der Bibliotheken, die C verwendet, wird als Standardbibliothek bezeichnet und enthält Methoden zum Ausführen von Betriebsdiensten. Eine dieser Methoden, genannt fork, dient der Erstellung neuer Prozesse. Der Prozess, der einen Fork initiiert, wird als Elternprozess des neu erstellten Kindprozesses betrachtet.

Der Prozess, der Daemons erstellt, ist die Initialisierung (genannt init)-Prozess, indem er seinen eigenen Prozess verzweigt, um neue zu erstellen. So gemacht, die init Prozess ist der eigentliche übergeordnete Prozess.

Es gibt eine andere Möglichkeit, einen Daemon zu spawnen, und zwar für einen anderen Prozess, der einen untergeordneten Prozess abspaltet und dann stirbt (ein Begriff, der oft anstelle von Exit verwendet wird). Wenn der Elternteil stirbt, wird der Kindprozess verwaist. Wenn ein untergeordneter Prozess verwaist ist, wird er von der init Prozess.

Wenn Sie Diskussionen über Daemons mit „einer übergeordneten Prozess-ID von 1“ mithören oder Online-Material lesen, ist dies der Grund. Einige Daemons werden nicht beim Booten erzeugt, sondern später von einem anderen Prozess erstellt, der gestorben ist, und init es übernommen.

Wichtig ist, dass Sie dies nicht mit einem Zombie verwechseln. Denken Sie daran, dass ein Zombie ein untergeordneter Prozess ist, der seine Aufgabe abgeschlossen hat und darauf wartet, dass der übergeordnete Prozess den Exit-Status akzeptiert.

Beispiele für Linux-Daemons

Auch hier besteht die gängigste Methode zur Identifizierung eines Linux-Daemons darin, nach einem Dienst zu suchen, der mit dem Buchstaben d endet. Hier sind einige Beispiele für Daemons, die möglicherweise auf Ihrem System ausgeführt werden. Sie können sehen, dass Daemons erstellt werden, um eine bestimmte Reihe von Aufgaben auszuführen:

systemd – Der Hauptzweck dieses Daemons besteht darin, die Dienstkonfiguration und das Verhalten über Linux-Distributionen hinweg zu vereinheitlichen.

rsyslogd – zum Protokollieren von Systemmeldungen. Dies ist eine neuere Version von syslogd mit mehreren zusätzlichen Funktionen. Es unterstützt die Protokollierung auf lokalen Systemen sowie auf Remote-Systemen.

udisksd – verarbeitet Vorgänge wie das Abfragen, Mounten, Unmounten, Formatieren oder Trennen von Speichergeräten wie Festplatten oder USB-Sticks

logind – ein winziger Daemon, der Benutzer-Logins und -Sitze auf verschiedene Weise verwaltet

httpd – der HTTP-Dienstmanager. Dies wird normalerweise mit Webserver-Software wie z Apache.

sshd – Daemon, der für die Verwaltung des SSH-Dienstes verantwortlich ist. Dies wird auf praktisch jedem Server verwendet, der SSH-Verbindungen akzeptiert.

ftpd – verwaltet den FTP-Dienst – FTP oder File Transfer Protocol ist ein häufig verwendetes Protokoll zum Übertragen von Dateien zwischen Computern; einer fungiert als Client, der andere als Server.

crond – der Scheduler-Daemon für zeitbasierte Aktionen wie Softwareupdates oder Systemchecks.

Was ist der Ursprung des Wortes Dämon?

Als ich anfing, diesen Artikel zu schreiben, wollte ich nur behandeln, was ein Daemon ist, und es dabei belassen. Ich habe mit UNIX gearbeitet, bevor Linux auf den Markt kam. Damals dachte ich an einen Daemon, wie er war: ein Hintergrundprozess, der Systemaufgaben ausführte. Es war mir wirklich egal, wie es zu seinem Namen kam. Mit weiteren Gesprächen über andere Dinge, wie Zombies und Waisen, stellte ich gerade fest, dass die Schöpfer des Betriebssystems einen verzerrten Sinn für Humor hatten (sehr ähnlich wie mein eigener).

Ich recherchiere immer zu jedem Stück, das ich schreibe, und ich war überrascht zu erfahren, dass anscheinend viele andere Leute wissen wollten, wie das Wort entstanden ist und warum.

Das Wort hat sicherlich ein wenig Neugier geweckt und ich gebe zu, dass ich nach dem Lesen mehrerer lebhafter Gespräche auch neugierig geworden bin. Führen Sie eine Suche nach der Bedeutung oder Etymologie des Wortes (der Herkunft von Wörtern) durch und Sie werden mehrere Antworten finden.

Um einen Beitrag zur Diskussion zu leisten, hier meine Meinung dazu.

Die früheste Form des Wortes, Daemon, wurde als Daimon geschrieben, eine Form von Schutzengeln – begleitende Geister, die halfen, den Charakter der Menschen zu formen, denen sie halfen. Sokrates behauptete, einen zu haben, der ihm in begrenzter Weise diente, aber richtig. Der Daimon von Sokrates sagte ihm nur, wann er den Mund halten sollte. Sokrates beschrieb seinen Daimon während seines Prozesses 399 v. Chr. Der Glaube an Daimonen gibt es also schon seit geraumer Zeit. Manchmal wird die Schreibweise von Daimon als Daemon angezeigt. Daimon und Daemon meinen hier dasselbe.

Während ein Dämon ein Begleiter ist, ist ein Dämon ein böser Charakter aus der Bibel. Die unterschiedliche Schreibweise ist beabsichtigt und wurde offenbar im 16. Jahrhundert beschlossen. Dämonen sind die Guten und Dämonen die Bösen.

Die Verwendung des Wortes Daemon in der Computertechnik kam 1963 auf. Projekt MAC ist die Abkürzung für Project on Mathematics and Computation und wurde am Massachusetts Institute of Technology erstellt. Hier war das Wort Dämon, kam in den allgemeinen Gebrauch bezeichnet jeden Systemprozess, der andere Aufgaben überwacht und abhängig von deren Verhalten vorbestimmte Aktionen ausführt. Das Wort Daemon wurde nach ihm benannt Maxwells Dämon.

Maxwells Dämon ist das Ergebnis eines Gedankenexperiments. 1871, James Clerk Maxwell stellte sich ein intelligentes und einfallsreiches Wesen vor, das in der Lage war, die Bewegung einzelner Moleküle in eine bestimmte Richtung zu beobachten und zu lenken. Der Zweck der Gedankenübung bestand darin, die Möglichkeit aufzuzeigen, dem zweiten Hauptsatz der Thermodynamik zu widersprechen.

Ich habe einige Kommentare gesehen, in denen das Wort Daemon ein Akronym für war Disk And Executive MONitor. Die ursprünglichen Benutzer des Wortes Dämon, habe es nie für diesen Zweck verwendet, daher glaube ich, dass die Akronym-Idee falsch ist.

Zu guter Letzt – um dies mit einer leichten Note zu beenden – gibt es das BSD-Maskottchen: einen Dämon, der wie ein Dämon aussieht. Der BSD-Daemon wurde nach den Software-Daemons benannt, bekommt aber sein Aussehen durch das Herumspielen mit dem Wort.

Der Name des Dämons ist Beastie. Ich habe dies (noch) nicht vollständig recherchiert, aber ich habe einen Kommentar gefunden, der besagt, dass Beastie von der Verwischung der Buchstaben kommt, BSD. Versuch es; Ich tat. Sagen Sie die Buchstaben so schnell Sie können und heraus kommt ein Geräusch, das dem Tier sehr ähnlich ist.

Beastie wird oft mit einem Dreizack gesehen, der symbolisch für die Verzweigung von Prozessen durch einen Dämon steht.