Heim  >  Artikel  >  System-Tutorial  >  Erkunden Sie die mysteriöse Welt der Hintergrundoperationen unter Linux

Erkunden Sie die mysteriöse Welt der Hintergrundoperationen unter Linux

WBOY
WBOYnach vorne
2024-02-12 14:06:221371Durchsuche

Lassen Sie uns eine mysteriöse Welt im Linux-Betriebssystem erkunden – im Hintergrund ausgeführt. Im täglichen Gebrauch müssen wir häufig die Ausführung im Hintergrund nutzen, um Aufgaben stillschweigend im Hintergrund ausführen zu lassen, ohne unsere aktuelle Arbeit zu beeinträchtigen. Wie implementiert man den Hintergrundbetrieb unter Linux?

Denken

Zunächst müssen wir uns mit der Frage befassen, warum das Hintergrundprogramm beendet wird, wenn Sie das Terminal direkt schließen. Das Terminal sendet ein SIGHUP-Signal an die in der aktuellen Umgebung gestarteten Hintergrundaufgaben , wodurch das laufende Programm hängen bleibt. Ignorieren Sie dann einfach das SIGHUP.

nohup

Der am häufigsten verwendete Befehl ist [nohup]. Anhand des Namens können Sie erkennen, ob er die Ausführung des Befehls unterbricht, das Terminal schließt oder sich von einem Konto abmeldet. Er muss auch weiterhin ausgeführt werden das Symbol.

Verwendung: nohup Command [ Arg … ] [ & ] 探秘 Linux 中的神秘后台运行世界

$ nohup sh test.sh &  
# 直接关闭当前终端,再打开一个查看  
$ ps -few|grep test.sh 

Wie oben zu sehen ist, ist der übergeordnete Prozess von test.sh, den wir ausführen, zu [PID 1] geworden und wird vom Linux-Hauptprozess übernommen.

setsid

nohup bedeutet, das SIGHUP-Signal zu ignorieren. Gibt es noch andere Ideen?

Der Befehl setip kann die Sitzung erneut öffnen, die ID der übergeordneten Prozessgruppe erben und sich der Kontrolle des übergeordneten Prozesses entziehen. Wie Sie in der Abbildung unten sehen können, ist der übergeordnete Prozess des test.sh-Skripts bereits init 1. Zu diesem Zeitpunkt hat er unabhängig vom Schließen oder Verlassen des Terminals nichts mit dem Hintergrundprogramm zu tun.

$ setsid sh test.sh 
探秘 Linux 中的神秘后台运行世界

Ein weiterer Unterschied zwischen setsid und nohup besteht darin, dass das &-Hintergrundsymbol nicht verwendet werden muss.

Ausgang

Verwenden Sie den Exit-Befehl, um das Terminal zu verlassen, aber unser Programm wird weiterhin ausgeführt. Warum ist das so?

Dies liegt daran, dass beim Verlassen des Terminals mit dem Befehl „exit“ das SIGHUP-Signal nicht an die Aufgabe gesendet wird, zu der das Terminal gehört. Es wird durch das Konfigurationselement „huponexit“ gesteuert. Sie können den Befehl „shopt“ verwenden Schau es dir an.

探秘 Linux 中的神秘后台运行世界
[root@api ~]# shopt |grep huponexit  
huponexit off 

Konfigurieren Sie huponexit auf „Ein“, verwenden Sie zum Beenden erneut den Exit-Befehl, und die entsprechenden Aufgaben werden entsprechend beendet.

[root@api ~]# shopt -s huponexit  
[root@api ~]# shopt |grep huponexit  
huponexit on 

Falle

Der Befehl

trap ist ein in Linux integrierter Befehl, der beim Empfang des angegebenen Signals ausgeführt werden soll, gefolgt vom zu verarbeitenden Signalnamen:

探秘 Linux 中的神秘后台运行世界

Wenn ein Skript im Hintergrund ausgeführt werden muss und wir nicht möchten, dass das Terminal das Programm beendet und schließt, können wir dem Skript den Trap-Befehl hinzufügen, um das SIGHUP-Signal zu ignorieren (den Prozess anzuhalten).

 #!/bin/sh  
trap "" HUP  
while true;do  
date >> /root/test.txt  
sleep 1  
done 

Der Linux-Befehl screen wird für Multi-Window-Verwaltungsprogramme verwendet. Er kann ein Terminal erstellen und das Programm darin ausführen lassen

screen sh test.sh &
探秘 Linux 中的神秘后台运行世界Wie aus dem Beispiel ersichtlich ist, ist der übergeordnete Prozess des Testskripts der Bildschirmterminalprozess, und die übergeordnete Prozess-PID1 des Bildschirmterminals schließt auch die Ausführung des Hintergrundprozesses ab.

Kurz gesagt ist die Ausführung im Hintergrund eine sehr verbreitete und praktische Technik unter Linux. Unabhängig davon, ob es sich um die Ausführung einiger Hintergrunddienste auf der Serverseite oder um die Erledigung langwieriger Aufgaben auf einem PC handelt, können Hintergrundvorgänge uns dabei helfen, die Effizienz zu verbessern und unsere tägliche Arbeit zu erleichtern.

Das obige ist der detaillierte Inhalt vonErkunden Sie die mysteriöse Welt der Hintergrundoperationen unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen