logo

Linux-Daemon

Was ist ein Dämon?

Ein Daemon ist eine Art Programm über ein UNIX-ähnliches Betriebssystem, das unauffällig im Hintergrund und nicht beim direkten Zugriff eines Benutzers ausgeführt wird. Es wartet darauf, durch das Auftreten einer bestimmten Bedingung oder eines bestimmten Ereignisses ausgelöst zu werden.

In der Regel führen UNIX-ähnliche Systeme zahlreiche Daemons aus, vor allem, um Serviceanfragen über andere Systeme im Netzwerk zu bearbeiten, Hardwareaktivitäten zu berücksichtigen und auch auf andere Programme zu reagieren.

Beispiele für Bedingungen oder Aktionen, die Daemons für die Aktivität aktivieren könnten, können ein bestimmtes Datum oder eine bestimmte Uhrzeit, das Verstreichen eines beschriebenen Zeitintervalls, der Empfang einer Webanfrage oder einer E-Mail, die über eine bestimmte Kommunikationsleitung erstellt wurde, und das Landen einer Datei in einem bestimmten Verzeichnis sein.

Array von Strings in der C-Programmierung

Es ist nicht zwingend erforderlich, dass der Täter einer Bedingung oder Aktion weiß, dass der Daemon lauscht.

Allerdings führen Programme häufig eine Aktion aus, nur weil sie wissen, dass dadurch implizit ein Daemon aktiviert wird.

Ein Daemon wird auch Hintergrundprozesse genannt. Es handelt sich um ein UNIX- oder Linux-Programm, das im Hintergrund ausgeführt wird. Fast jeder Daemon enthält Namen, die mit dem Buchstaben „d“ enden. Beispielsweise verwaltet sshd Verbindungen für den SSH-Fernzugriff oder den httpd-Daemon, der den Apache-Server verwaltet. Linux startet Daemons häufig zum Startzeitpunkt.

Verschiedene Shell-Skripte werden im Verzeichnis /etc/init.d gespeichert. Diese Skripte werden zum Starten und Stoppen von Daemons verwendet.

Linux-Prozesse

Normalerweise werden Daemons als Prozesse instanziiert. Bei diesen Prozessen handelt es sich um die laufenden oder ausführenden Instanzen eines Programms. Ein Prozess wird vom Kernel, dem Kern des Betriebssystems, verwaltet und weist alle speziellen Prozessidentifikationsnummern zu.

Unter Linux gibt es hauptsächlich drei gängige Arten von Prozessen:

  • Charge
  • Interaktiv
  • Dämon

Der Batch-Prozess wird über eine Prozesswarteschlange übermittelt und hat keinen Bezug zur Befehlszeile. Diese Prozesse eignen sich gut, um wiederkehrende Vorgänge durchzuführen, wenn die Auslastung des Systems gering ist.

Der interaktive Prozess wird vom Benutzer interaktiv auf der Befehlszeile ausgeführt.

Der Daemon wird von einem System wie jenen Prozessen identifiziert, deren übergeordneter Prozess eine PID von eins enthält.

Es definiert immer die Prozessinitialisierung. Der Init-Prozess ist der anfängliche Prozess, der beim Hochfahren eines Linux-Systems gestartet wird und auf dem System verbleibt, bis das System heruntergefahren wird.

Der Init kann jeden Prozesstyp übernehmen, dessen übergeordneter Prozess beendet wird oder stirbt, ohne auf den Status des untergeordneten Prozesses zu warten.

Die grundlegende Technik zum Starten des Daemons besteht also darin, ihn zweimal oder einmal zu teilen oder zu verzweigen und den übergeordneten Prozessen die Beendigung zu ermöglichen, während der untergeordnete Prozess mit der Implementierung seiner allgemeinen Funktion beginnt.

Python konvertiert Bytes in String

Geschichte der Dämonen

Einige Daemons werden durch Init-Skripte von System V veröffentlicht. Hierbei handelt es sich um Skripte oder kurze Programme, die beim Systemstart automatisch ausgeführt werden können. Sie können entweder in Abständen reproduziert werden oder für die Dauer der Sitzung bestehen bleiben.

Jetzt werden mehrere Daemons nur noch bei Bedarf und von einem Daemon (xinetd) gestartet, anstatt kontinuierlich ausgeführt zu werden. Der xinetd ist als TCP/IP-Superserver bekannt.

Es wird zum Startzeitpunkt gestartet und überwacht außerdem verschiedene Ports, die den in der Konfigurationsdatei aufgeführten Prozessen zugewiesen sind, d. h. /etc/xinetd.conf oder /etc/inetd.conf.

Manuell können auch einige Daemons gestartet werden, die dann von den Anwendungsprogrammen und dem Betriebssystem gestartet werden. Alle Daemons verfügen in mehreren UNIX-ähnlichen Betriebssystemen, einschließlich Linux, über ein individuelles Skript, mit dem sie neu gestartet und beendet werden können.

Die Verwaltung dieser Skripte erfolgt nach Runlevel. Der Runlevel kann als Betriebs- oder Konfigurationszustand eines Systems definiert werden, der nur die Verfügbarkeit einiger ausgewählter Prozesse zulässt. Der Start in einem bestimmten Runlevel kann dabei helfen, bestimmte Probleme oder Probleme zu lösen, einschließlich der Behebung von Systemfehlern.

Powershell kleiner oder gleich

Kernpunkte von Dämonen

Einige wichtige Kernpunkte von Daemons werden im Folgenden erläutert:

  • Das Wort „Daemon“ ist vom griechischen Methodologie-Daemon abgeleitet. Dies waren übernatürliche Wesen, die zwischen Sterblichen und Göttern standen und über einzigartige Macht oder Wissen verfügten.
  • Im Jahr 1963 wurde der Begriff Daemon erstmals im Systemkontext beim Pionierprojekt MAC mit Hilfe von IBM 7094 verwendet.
  • Es wurde vom Daemon der Thermodynamik und Physik von Maxwell inspiriert, einem abstrakten Agenten, der verschiedene Moleküle mit unterschiedlichen Geschwindigkeiten unterstützte und unermüdlich im Hintergrund arbeitete.
  • Danach wurde der Begriff zur Beschreibung der Prozesse im Hintergrund verwendet, die unermüdlich an der Umsetzung von Systemaufgaben arbeiteten.
  • Der erste Daemon-Computer war ein Programm, das automatisch Bandsicherungen erstellte.
  • Dieser Begriff wurde für die Computernutzung verwendet. Es war eine Kurzform für Disk and Execution MONitor.
  • Verschiedene Programme, sogenannte Dienste, funktionieren als Daemons auf dem Microsoft Windows-Betriebssystem. Allerdings wird bei diesen Systemen manchmal auch das Wort Daemon verwendet.

Implementierung von Daemons

Unix-ähnliche Systeme

Der Prozess eines Unix-ähnlichen Systems ist ein Daemon, wenn sein übergeordneter Prozess stirbt und dieser Daemon zum Init-Prozess (Prozess Nummer 1) als übergeordneter Prozess ernannt wird und im rein technischen Sinne kein steuerndes Terminal enthält.

Ein Daemon kann jedoch jeder Hintergrundprozess sein, unabhängig davon, ob er dem Init-Prozess untergeordnet ist oder nicht.

Die grundlegende Technik dafür, dass eine Prozedur zu einem Daemon auf dem UNIX-ähnlichen System wird, wenn die Prozedur über die Befehlszeile oder Startskripts wie das System Starter-Skript oder das Init-Skript gestartet wird, umfasst Folgendes:

  • Optionales Löschen unnötiger Variablen über die Umgebung.
  • Wird durch Beenden und Verzweigen als Hintergrundaufgabe ausgeführt. Es ermöglicht dem übergeordneten Daemon (Start- oder Shell-Prozess), Beendigungsbenachrichtigungen zu empfangen und die normale Ausführung fortzusetzen.
  • Das Trennen über den aufrufenden Abschnitt erfolgt normalerweise durch eine einzelne Operation: setsid():
    • Dissoziierung durch die TTY-Kontrolle.
    • Eine neuere Sitzung erstellen und Sitzungsleiter dieser Sitzung werden.
    • Leiter der Prozessgruppe werden.
  • Wenn der Daemon sicherstellen möchte, dass er keine neue TTY-Steuerung erbt, wird er möglicherweise beendet und erneut verzweigt. Das bedeutet, dass es innerhalb der neuen Sitzung nicht mehr der Sitzungsleiter ist und keine TTY-Steuerung erben kann.
  • Festlegen des aktuellen Arbeitsverzeichnisses als Stammverzeichnis, damit der Prozess kein Verzeichnis verwendet, das sich möglicherweise über einem gemounteten Dateisystem befindet.
  • Ändern der umask auf 0, um create(), open() und andere Aufrufe des Betriebssystems zu ermöglichen, um deren Berechtigungsmaske zu vereinfachen und sich nicht auf die gesamte Aufrufer-umask zu verlassen.
  • Umleiten der Dateideskriptoren 0, 1 und 2 für die Standardstreams (stderr, stdout, stdin) in eine Protokolldatei oder /dev/null und Schließen aller anderen über den übergeordneten Prozess erfassten Deskriptordateien.

Wenn der Prozess von einem Superserver-Daemon wie systemd, launchd oder inetd gestartet wird, implementiert der Superserver diese Funktionen für diesen Prozess, mit Ausnahme der Daemons alten Stils, die nicht in die Ausführung unter systemd umgewandelt werden und als Multithread- und Type=Forking-Datagrammserver beschrieben werden auf inetd.

String zum JSON-Objekt

MS-DOS

Das daemonartige Programm wurde als Terminate-and-Stay-Resident-Software (kurz TSR) innerhalb der Microsoft-DOS-Plattform ausgeführt.

Windows NT

Als Windows-Dienste bezeichnete Programme implementieren die Funktionen dieser Daemons auf den Microsoft Windows NT-Systemen. Sie werden als Prozesse ausgeführt und interagieren normalerweise nicht mit Maus, Tastatur und Monitor. Sie können beim Booten mithilfe des Betriebssystems gestartet werden.

Windows-Dienste werden manuell gestoppt, gestartet und konfiguriert über die Systemsteuerung (ein dediziertes Konfigurations-/Steuerungsprogramm), das PowerShell-Skriptsystem oder Net Stop- und Net Start-Befehle, das Service-Controller-Element des Service Control Managers.

Allerdings kann jede Windows-Anwendung die Aufgaben eines Daemons nicht nur wie ein Dienst implementieren, und einige Windows-Daemons bieten die Möglichkeit, als normaler Prozess ausgeführt zu werden.

Klassisches macOS und Mac OS

Verschiedene optionale Dienste und Funktionen wurden durch die beim Booten geladenen Dateien ermöglicht, die das Betriebssystem auf dem klassischen Mac OS neu aufbauen.

Diese wurden als Bedienfelder und Systemerweiterungen bezeichnet. Die späteren Versionen des Standard-Mac OS erweiterten diese um vollwertige, gesichtslose Hintergrundanwendungen.

Bei diesen Anwendungen handelt es sich um reguläre Anwendungen, die im Hintergrund ausgeführt werden. Diese wurden dem Benutzer weiterhin als reguläre Systemerweiterungen angegeben.

macOS ist ein Unix-System und verwendet Daemons. Das macOS verwendet den Begriff des Dienstes zur Bezeichnung von Software, die über das Dienstemenü ausgewählte Funktionen implementiert, anstatt diesen Begriff wie Windows für Daemons zu verwenden.

Typische Daemon-Funktionen

  • Führen Sie geplante Aktionen wie Cron aus.
  • Überwachen Sie Systeme wie RAID-Arrays oder den Festplattenzustand.
  • Reagieren Sie auf die Anfrage des Netzwerks und öffnen Sie den Netzwerkport (z. B. Port 80).

Wie starten, starten oder stoppen wir Daemons für eine Shell-Eingabeaufforderung?

Wir müssen ihre Servicebefehle wie folgt anwenden:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

Im folgenden Beispiel Sterne, Neustart und Stopp.

 service httpd start service httpd stop service httpd restart 

Wie überprüfen wir die Liste jedes laufenden Daemons?

Um den Status jedes installierten Daemons zu überprüfen, geben Sie Folgendes ein:

 service - -status-all 

Planung unseres Dämons

Welcher Daemon wird tun?

Der Daemon muss eine Sache implementieren, und zwar gut. Diese einzelne Sache kann so kompliziert sein wie die Verwaltung vieler Postfächer über mehr als eine Domäne oder so einfach wie der Aufruf von sendmail, um sie an einen Administrator zu senden und einen Bericht anzugeben.

Wir müssen eine bessere Vorstellung davon haben, was ein Daemon auf jeden Fall tun muss. Es wird mit einigen anderen Daemons interagieren, die wir möglicherweise angeben oder nicht. Es ist auch etwas anderes zu untersuchen.

für String-Array Java

Interaktion

Dämonen dürfen niemals direkt über ein Terminal mit dem Benutzer kommunizieren. Jede Kommunikation durchläuft eine Reihe von Schnittstellentypen (die wir möglicherweise angeben müssen oder nicht), die so komplex wie die GUI+GTK oder so einfach wie ein einzelner Satz sein können.

Die Grundstruktur des Daemons

Daemon muss ein paar einfache Hausarbeiten erledigen, um sich beim Start auf die eigentliche Aufgabe vorzubereiten. Es umfasst einige Schritte, die wie folgt sind:

  • Einen Superprozess abspalten (übergeordneter Prozess)
  • Maske des Dateimodus ändern (umask)
  • Öffnen Sie Protokolle zum Schreiben
  • Erstellen Sie eine spezielle Sitzungs-ID (kurz SID)
  • Ändern Sie das Arbeitsverzeichnis (aktuell) an einen sicheren Ort
  • Schließen Sie die Klassendeskriptoren der Datei
  • Geben Sie den ursprünglichen Daemon-Code ein

Liste der Daemon-Dienste für Unix- und Linux-ähnliche Systeme

    Anachron:Es führt beim Start verzögerte Cron-Aktionen aus.amd:Es steht für Auto Mount Daemon.usw:Es führt Aufträge aus, die in der Warteschlange des Tools stehen.apmd:Es steht für Advanced Power Management Daemon.crond:Es handelt sich um einen Task-Scheduler-Daemon.Autofs:Es unterstützt den Automounter-Daemon dabei, Geräte bei Bedarf aus- und einzuhängen.dhcpd:Es steht für Dynamic Host Configuration Protocol. Außerdem handelt es sich um einen Internet-Bootstrap-Protokollserver.cupsd:Es steht für CUPS-Druckerdaemon.ftpd:Es steht für FTP Server Daemon.httpd:Es handelt sich um einen Webserver-Daemon.eingezäunt:Es kann die Daemons weiterleiten, die egpup ersetzen, und mehr als ein Routing-Protokoll verwalten.lpd:Es steht für Line Printer Daemon.imapd:Es ist der IMAP-Server-Daemon.inetd:Es steht für Internet Superserver Daemon.memchached:Es handelt sich um einen Daemon zum Zwischenspeichern verteilter Objekte im Arbeitsspeicher.MySQL:Es handelt sich um einen Datenbankserver-Daemon.gemountet:Es ist ein Mount-Daemon.nfsd:Es steht für Network File Sharing Daemon.genannt:Es handelt sich um einen DNS-Server-Daemon.nflock:Es wird zum Starten und Stoppen der Sperrdienste von NFS-Dateien verwendet.ntpd:Es steht für Network Time Protocol Service Daemon.nmd:Es steht für Network Message Block Daemon.Postgresql:Es handelt sich um einen Datenbankserver-Daemon.Postfix:Es ist ein Mail-Transport-Agent und wird als Ersatz für Sendmail verwendet.rpcbind:Es steht für Remote Procedure Call Bind Daemon.geroutet:Es verwaltet Routing-Tabellen.smd:Es ist ein Samba-Daemon.sendmail:Es handelt sich um einen Mail-Transfer-Agent-Daemon.smtpd:Es steht für Simple Mail Transfer Protocol Daemon.Tintenfisch:Es handelt sich um einen Proxy-Server-Daemon zum Zwischenspeichern von Webseiten.SNMPD:Es steht für Simple Network Management Protocol Daemon.synchronisiert:Es kann verschiedene Dateisysteme zusammen mit dem Systemspeicher synchronisieren.sshd:Es handelt sich um einen Secure Shell Server Daemon.syslogd:Es steht für System Logging Daemon.telnetd:Es handelt sich um einen Telnet-Server-Daemon.tcpd:Es verfügt über einen Service-Wrapper, der die Autorisierung auf inetd-basierte Dienste von hosts.deny und hosts.allow beschränken kann.vsftpd:Es steht für Very Secure FTP Daemon.webmin:Es handelt sich um einen webbasierten Verwaltungsserver-Daemon.xntd:Es handelt sich um einen Netzwerk-Zeitserver-Daemon.xinetd:Es handelt sich um einen Enhanced Internet Superserver Daemon.