Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist ein Linux-Daemon?

Was ist ein Linux-Daemon?

青灯夜游
青灯夜游Original
2022-02-25 15:51:237075Durchsuche

Unter Linux wird der Daemon-Prozess auch „Elf-Prozess“ genannt. Es handelt sich um einen speziellen Prozess, der im Hintergrund läuft und von keinem Terminal gesteuert wird. Er dient der Ausführung bestimmter Systemaufgaben. Der Daemon-Prozess ist unabhängig vom steuernden Terminal und führt bestimmte Ereignisse regelmäßig aus, sobald sie auftreten.

Was ist ein Linux-Daemon?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Definition des Daemon-Prozesses

Ein Daemon-Prozess, auch Daemon genannt, ist ein spezieller Prozess, der im Hintergrund läuft und von keinem Terminal gesteuert wird und zur Ausführung bestimmter Systemaufgaben verwendet wird. Viele Daemons werden beim Systemstart gestartet und laufen, bis das System heruntergefahren wird. Andere starten nur bei Bedarf und enden automatisch, wenn die Aufgabe abgeschlossen ist.

Es ist unabhängig vom Steuerterminal und führt bestimmte auftretende Ereignisse regelmäßig aus. Daemon ist ein sehr nützlicher Prozess. Die meisten Linux-Server werden mithilfe von Daemon-Prozessen implementiert.

Beim Start des Linux-Systems werden viele Systemdienstprozesse gestartet. Diese Systemdienstprozesse verfügen nicht über Steuerterminals und können nicht direkt mit Benutzern interagieren. Andere Prozesse werden erstellt, wenn sich der Benutzer anmeldet oder das Programm ausführt, und beendet, wenn der Vorgang endet oder der Benutzer sich abmeldet. Der Systemdienstprozess (Daemon-Prozess) wird jedoch nicht von der An- und Abmeldung des Benutzers beeinflusst und ist dies immer der Fall läuft. Diese Art von Prozess hat einen Namen namens Daemon.

Lassen Sie uns den Befehl ps axj verwenden, um die Prozesse im System anzuzeigen. Der Parameter a gibt nicht nur die Prozesse des aktuellen Benutzers an, sondern auch die Prozesse aller anderen Benutzer; der Parameter x gibt nicht nur die Prozesse mit steuerndem Terminal an, sondern auch alle Prozesse ohne steuerndes Terminal; und arbeitssteuerungsrelevante Informationen.

Was ist ein Linux-Daemon?

(1) Alles mit -1 in der TPGID-Spalte ist ein Prozess, der das Terminal nicht steuert, also ein Daemon-Prozess;

(2) Der in [ ] in der COMMAND-Spalte eingeschlossene Name stellt den dar Kernel-Thread. Diese Threads werden im Kernel erstellt, daher gibt es keinen Programmdateinamen und keine Befehlszeile, um den Kernel darzustellen.

(3) Wir sind bereits vertraut Beim Init-Prozess ist udevd für die Verwaltung der Gerätedateien im /dev-Verzeichnis verantwortlich, acpid ist für die Energieverwaltung verantwortlich und syslogd ist für die Verwaltung der Protokolldateien unter /var/log verantwortlich

(4) Es ist ersichtlich, dass Der Daemon-Prozess verwendet normalerweise einen Namen, der mit d endet, was Daemon bedeutet.

Eigenschaften des Daemon-Prozesses

(1) Unter Linux wird die Schnittstelle für jedes System zur Kommunikation mit Benutzern zu einem Terminal. Jeder Prozess, der von diesem Terminal aus ausgeführt wird, wird an dieses Terminal angehängt Das Steuerterminal;

(2) Wenn das Steuerterminal geschlossen wird, wird der entsprechende Prozess automatisch geschlossen. Der Daemon-Prozess kann diese Einschränkung jedoch durchbrechen. Er ist vom Terminal getrennt und wird im Hintergrund ausgeführt. (Der Zweck der Trennung vom Terminal besteht darin, zu verhindern, dass die Informationen während des laufenden Prozesses in irgendeinem Terminal angezeigt werden.) von keinem Terminal erzeugt werden, wird er erst ausgeführt, wenn das gesamte System heruntergefahren wird (natürlich kann dies als Abbruch des entsprechenden Daemon-Prozesses betrachtet werden); 3) Wenn Sie möchten, dass ein Prozess nicht durch den Benutzer blockiert oder durch Unterbrechungen oder andere Änderungen beeinträchtigt wird, muss dieser Prozess in einen Daemon-Prozess umgewandelt werden.

Die Beziehung zwischen Prozessen, Prozessgruppen, Sitzungen und Steuerterminals

Da die Erstellung eines Daemon-Prozesses die Änderung dieser Umgebungsparameter erfordert, ist es wichtig, die Beziehung zwischen ihnen zu verstehen:

Was ist ein Linux-Daemon?

    Prozess Gruppe: Sie besteht aus einem oder mehreren Prozessen, und die Prozessgruppennummer (GID) ist die PID des Prozessleiters in diesen Prozessen.
  • Sitzung: Es wird eigentlich als Sitzung bezeichnet. Es umfasst alle Prozessgruppen während des Zeitraums. Im Allgemeinen beginnt eine Sitzung, wenn sich der Benutzer anmeldet. Im Allgemeinen ist die Anmeldung ein Shell-Terminal, also ist das Shell-Terminal das erste Die Sitzung endet im Allgemeinen mit der Abmeldung. Für einen Nicht-Prozessleiter kann setsid() aufgerufen werden, um eine neue Sitzung zu erstellen.
  • Kontrollterminal (tty): Bezieht sich im Allgemeinen auf das Shell-Terminal, das während der Sitzung vorhanden sein kann oder nicht.

Erstellen eines Daemon-Prozesses Der wichtigste Schritt beim Erstellen eines Daemon-Prozesses besteht darin, die Funktion „setsid“ aufzurufen, um einen neuen Sitzungsleiter zu erstellen.

#includepid_t setid(void);//该函数调用成功时返回新创建的Session的id(其实也就是当前进程的id),出错返回-1。

Beachten Sie, dass der aktuelle Prozess vor dem Aufruf dieser Funktion nicht der Anführer der Prozessgruppe sein darf, da die Funktion sonst -1 zurückgibt. Es ist auch einfach sicherzustellen, dass der aktuelle Prozess nicht der Anführer der Prozessgruppe ist. Geben Sie einfach zuerst einen Fork ein und rufen Sie dann setsid auf. Der von fork erstellte untergeordnete Prozess befindet sich in derselben Prozessgruppe wie der übergeordnete Prozess. Der Anführer der Prozessgruppe muss der erste Prozess der Gruppe sein, daher kann der untergeordnete Prozess nicht der erste Prozess der Gruppe sein Prozess wird Es wird kein Problem geben.

Das Ergebnis eines erfolgreichen Aufrufs dieser Funktion ist:

(1) Erstellen Sie eine neue Sitzung, der aktuelle Prozess ist der Sitzungsleiter und die ID des aktuellen Prozesses ist die Sitzungs-ID

(2) Erstellen Sie eine neue Prozessgruppe, der aktuelle Prozess ist der Anführer der Prozessgruppe und die ID des aktuellen Prozesses ist die ID der Prozessgruppe.

(3) Wenn der aktuelle Prozess ursprünglich ein Steuerterminal hatte , verliert es dieses Terminal und wird zu einem Prozess ohne steuerndes Terminal. (Das sogenannte verlorene Kontrollterminal bedeutet, dass das ursprüngliche Kontrollterminal noch geöffnet ist und weiterhin gelesen und geschrieben werden kann, es sich jedoch nur um eine gewöhnliche geöffnete Datei und nicht um ein Kontrollterminal handelt.)

So töten Sie einen Daemon

1. Suchen Sie zuerst den entsprechenden Daemon und verwenden Sie dann kill -9 daemon name code>Kill; ps axj | grep 守护进程名字,找到相应的守护进程,然后使用kill -9 守护进程名杀掉;

2.利用ps -ef命令查找相应的守护进程,再用kill -9

2. Verwenden Sie den Befehl ps -ef, um den entsprechenden Daemon-Prozess zu finden, und verwenden Sie dann den Befehl kill -9, um ihn zu beenden . Create Shell-Skripte verwalten automatisch das Starten, Herunterfahren und Neustarten von Prozessen.

Verwandte Empfehlungen: „

Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist ein Linux-Daemon?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn