Da das Linux-Betriebssystem als Multitasking-Betriebssystem gekennzeichnet ist, ist ein Daemon per Definition ein Programm, das kontinuierlich als Hintergrundprozess ausgeführt wird. Kurz gesagt, die Ausführung dieses Prozesses ist nicht von der Systeminteraktion eines aktiven Benutzers abhängig. Ein normaler Systembenutzer kann die periodische Ausführung eines Daemon-Prozesses nicht kontrollieren.
Die Namenskonvention, die die meisten Daemon-Prozesse definiert, ist der Einbuchstabe „Suffix“ d. Diese Namenskonvention ermöglicht es, zwischen normalen Systemprozessen und Daemon-betriebenen Prozessen zu unterscheiden. Beispiel: sshd ist ein Daemon-Prozess, der für die Verwaltung eingehender verantwortlich ist SSH Verbindungen. Ein weiteres Beispiel für einen Daemon-Prozess ist syslogd . Es ist verantwortlich für die Protokollierung des Linux-Systems.
In einer Linux-Umgebung erfolgt der Start von Daemons zur Boot-Zeit. Da das Linux-System ein perfekter Unix-Klon ist, qualifiziert sich ein Init-Prozess als Elternprozess eines Daemons. Um Daemons auf Ihrem Linux-Betriebssystem zu starten und zu stoppen, müssen Sie zuerst auf die /etc/init.d scripts-Verzeichnis auf Ihrem Betriebssystem.
Allgemeine Daemon-Funktionen
- Es ermöglicht Ihrem System, korrekt auf Netzwerkanfragen zu reagieren, indem jede Anfrage einem kompatiblen Netzwerkport zugeordnet wird. Ein typischer Netzwerkport, der von Daemons verwaltet wird, ist Port 80.
- Daemons ermöglichen es, geplante Systemaufgaben auszuführen oder auszuführen. Der für diese spezielle Aufgabe zuständige Daemon heißt cron . Es wird ein Cronjob erstellt die die regelmäßige Ausführung Ihrer geplanten Aufgaben übernimmt.
- Daemons leisten auch einen unschätzbaren Beitrag zur Überwachung der Leistung Ihres Systems. Sie können beispielsweise den Zustand des RAID-Arrays oder der Festplatte überprüfen.
Nützliche Linux-Dienst-Daemons
- und :Auto-Mount-Daemon
- Anacron: Startzeitausführung von verzögerten Crontasks
- apmd: Advanced Power Management Daemon
- atd: Verwendet eine Tool-Funktionalität, um Jobs in der Warteschlange auszuführen
- autofs: arbeitet Hand in Hand mit dem Automounter-Daemon, um das Mounten und Unmounten von On-Demand-Systemgeräten zu erleichtern
- crond: ein Daemon, der die Aufgabenplanung übernimmt
- cupsd: ein Daemon, der den CUPS-Druck handhabt
- DHCP: Daemon sowohl für den Internet Bootstrap Protocol Server als auch für das Dynamic Host Configuration Protocol.
- Gated: Routing-Daemon, der für mehrere Routing-Protokolle verantwortlich ist. Es ersetzt routed und egpup
- httpd: ein Daemon, der sich mit Webservern wie Apache befasst
- inetd: dem Internet Superserver zugeordneter Daemon
- imapd :Daemon für den IMAP-Server
- lpd: Zeilendrucker-Daemon
- Speicher-Cache: Objekt-Caching-Daemon, der im Arbeitsspeicher verteilt ist
- mountd: Mount-Daemon
- MySQL: Daemon für den MySQL-Datenbankserver
- benannt: Daemon für DNS-Server
- nfsd: Network File Sharing Daemon
- nfslock: Da nfsd Dateisperrdiensten zugeordnet ist, kann dieser Daemon diese Dienste starten und stoppen.
- nmbd: Daemon für Network Message Block
- ntpd: Daemon für den Network Time Protocol-Dienst
- Postfix: ein Daemon, der als Mail-Transport-Agent dient. Es ist eine Alternative zu sendmail.
- Postgresql: Daemon für den Postgres-Datenbankserver
- weitergeleitet: Daemon zur Verwaltung von Routing-Tabellen
- rpcbind: Daemon, der mit Remote Procedure Call Bind verknüpft ist
- Mail senden: ein Daemon, der als Mail-Transfer-Agent dient
- smbd: Daemon für Samba-SMB-Server
- smtpd: Daemon für das Simple Mail Transfer Protocol
- snmpd: Daemon für das Simple Network Management Protocol
- Tintenfisch: Daemon, der mit einem Proxy-Server für das Caching von Webseiten verbunden ist
- sshd: Daemon, der mit Secure Shell Server verknüpft ist
- syncd: Daemon zum Synchronisieren des Systemspeichers mit Systemdateien
- Syslog: ein Daemon, der die Systemprotokollierung durchführt
- tcpd: Dieser Daemon-Service-Wrapper führt Zugriffsbeschränkungsprotokolle im Zusammenhang mit den inetd-basierten Daemon-Services aus. Es implementiert diese Einschränkungen durch hosts.allow und hosts.deny .
- Telnetd: Daemon für den Telnet-Server
- vsftpd: Daemon für sehr sicheres File Transfer Protocol
- webmin: Daemon für den webbasierten Administrationsserver
- xinetd: Daemon, der mit Enhanced Internet Supervisor verknüpft ist
- xntd :Daemon für Network Time Server
Egal, ob Sie ein Anfänger, Fortgeschrittener oder Experte in der Welt der Linux-Betriebssysteme sind, Sie werden es nie versäumen, sich mit einem der oben aufgeführten Daemons vertraut zu machen, während Sie Ihre Fähigkeiten und Ihr Fachwissen in dieser Betriebssystemumgebung erweitern.
Starten/Stoppen/Neustarten von Daemons:der Terminal-basierte Ansatz
Nachdem Sie nun eine Liste nützlicher Linux-Daemons haben, die Sie sich merken und erkunden können, müssen Sie zunächst wissen, wie Sie diese Daemons starten, stoppen oder neu starten. Wenn Ihr Linux-Terminal gestartet ist, beachten Sie die folgenden Syntaxregeln, um einen Daemon auf Ihrem Linux-Betriebssystem zu starten, zu stoppen und neu zu starten.
service preferred-daemon-name start service preferred-daemon-name stop service preferred-daemon-name restart
Ersetzen Sie den Namen des bevorzugten Daemons Syntaxargument mit dem Linux-System-Daemon-Namen Ihrer Wahl. Sie können einen aus der oben hervorgehobenen Daemon-Liste auswählen, solange er aktiv oder bereits auf Ihrem Linux-System definiert ist. Beispielsweise können wir die praktische Verwendung der obigen Syntax implementieren, indem wir versuchen, ein zu starten, zu stoppen und neu zu starten Dämon. Navigieren Sie zu /etc/init.d Verzeichnis auf Ihrem Terminal für die Liste der verfügbaren Daemons auf Ihrem Linux-System.
Die Daemons Ihrer Linux-Systeme auflisten
Eine effektivere Möglichkeit, die verfügbaren Daemons auf Ihrem Linux-System zu notieren, anstatt zu /etc/init.d zu navigieren Verzeichnis soll alle definierten aktiven und inaktiven Daemons aus diesem Verzeichnis mit einem einzigen Befehl auflisten. Der folgende Befehl ist effektiv, um dieses Ziel zu erreichen.
$ service –status-all
Die eingeklammerten positiven [+] und negativen [-] Zeichen vor den aufgelisteten Daemon-Namen implizieren, dass sie entweder aktiv oder inaktiv sind.
Mit benutzerdefinierten Daemons arbeiten
Bestimmte Regeln oder Protokolle müssen befolgt werden, um einen benutzerdefinierten Daemon erfolgreich zu erstellen und zu implementieren. Diese Protokolle helfen Ihnen, die Ausführung von Daemons in jeder Linux-Umgebung vollständig zu verstehen. Daemons sind auch flexibel genug, um über Systemaufrufe mit Kernelmodulen zu kommunizieren. Dieser Daemon-Funktionsumfang unterstützt seine Interaktion mit Hardwaregeräten wie PDAs (Personal Digital Assistants), Druckern und funktionsfähigen externen Controller-Boards. Die Bausteine von Daemons tragen auch zur charakteristischen Leistungsfähigkeit und Flexibilität des Linux-Betriebssystems bei.
Eine zuordenbare Daemon-Implementierung mit Python wird von Sander Marechal sorgfältig demonstriert und dokumentiert. Achten Sie darauf, die Ausführungsreihenfolge beim Erstellen dieses Daemons einzuhalten. Zunächst einmal benötigt Ihr Linux-System die Installation von Python-Paketen, um Daemons erfolgreich zu entwickeln. Um Python zu installieren, können Sie den folgenden Befehl verwenden.
$ sudo apt install python3-pip python3-dev
Der Link zum von Sander Marechal verfassten Python-Daemon-Code bietet auch eine verfeinerte Python-3-Codeversion. Es wäre hilfreich, wenn Sie darüber nachdenken, es zu implementieren, um besser zu verstehen, wie Daemons funktionieren.
Wenn Sie sich nicht sicher sind, ob Sie Python installiert haben, führen Sie den folgenden Befehl auf Ihrem Linux-Terminal aus.
$ python3 --version
Der Zweck eines jeden Daemons
Da ein einzelner Daemon der Bearbeitung einer bestimmten Aufgabe gewidmet ist, sollte er diese perfekt ausführen. Die fragliche Aufgabe kann so einfach sein wie das Erstellen eines Berichts und das Senden an einen Administrator über sendmail oder so komplex wie das Verwalten mehrerer Domänen, die mit mehreren Postfächern verknüpft sind. Irgendwann muss der zu erstellende Daemon mit anderen existierenden Daemons kommunizieren.
Benutzer-zu-Daemon-Interaktion
Es wird davon abgeraten, den Systembenutzer und den erstellten Daemon direkt miteinander kommunizieren zu lassen. Wenn es für den Daemon erforderlich ist, erstellen Sie die Kommunikation mit einem Systembenutzer. Diese Kommunikation kann durch so etwas wie eine GUI-Schnittstelle erleichtert werden. Diese Kommunikationsplattform kann entweder GTK+-GUI-Komplexität oder Signalsatz-Einfachheit aufweisen.
Den Daemon erstellen
Zahlreiche Ansätze unterstützen die Erstellung von Daemons. Beispielsweise können Sie Ihre Befehlszeilenschnittstelle verwenden, um ein Python-Skript wie folgt zu dämonisieren:
$ python my_python_script.py &
Sie können den von Sander Marechal erstellten Python3-Daemon-Code in einer Python-Datei speichern und mit dem obigen Befehl daemonisieren. Während der obige Terminalbefehl leicht einen Daemon für Sie erstellt, müssen Sie sich mit Herausforderungen wie unvorhersehbaren Terminalausgaben auseinandersetzen. Diese Herausforderungen hängen davon ab, wie gut Sie Ihren Python-Daemon-Code umgestaltet haben. Außerdem unterstützt der obige Ansatz nicht das Zuweisen von PID-Sperrdateien zu bestimmten Daemons. Es macht es unmöglich, einen Daemon zu steuern, da die meisten von ihnen sofort ausgeführt werden. Wenn Sie andererseits nur einen einfachen Daemon benötigen, liefert Ihnen der oben beschriebene Ansatz die gewünschten Daemon-Ergebnisse.
Daemon-Grundstruktur
Bevor ein Daemon eine beabsichtigte Funktion ausführt oder ausführt, muss er einige vorgefasste Regeln berücksichtigen, die zu seiner Ausführung führen. Sie können sich diese Regeln als einfache Hausarbeit vorstellen, die zu ihrer eigentlichen Aufgabe führt. Diese Regeln können in die folgenden Schritte unterteilt werden.
- Zunächst wird ein Fork von einem übergeordneten Prozess erstellt
- Ändern von umask (Dateimodusmaske) folgt
- Protokolle werden zum Schreiben geöffnet
- Eine eindeutige SID (Sitzungs-ID) wird erstellt
- Die Ausführung wechselt vom aktuellen Arbeitsverzeichnis zu einem sekundären Speicherort, um die Dateiintegrität zu bewahren
- Standarddateideskriptoren sind geschlossen
- Ausführung von gezieltem Daemon-Code
Weitere Beispielimplementierungen von Daemons finden Sie auf GitHub.