Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Beispielcodeanalyse für den Linux-Daemon-Prozess

Beispielcodeanalyse für den Linux-Daemon-Prozess

WBOY
WBOYnach vorne
2023-06-02 20:31:091354Durchsuche

Die Rolle residenter Prozesse unter Linux kann nicht ignoriert werden, aber auch die darin enthaltenen Probleme können nicht ignoriert werden. Wie man einen Prozess startet, wie man einen Prozess beendet und wie man einen Prozess neu startet, nachdem er gestorben ist, muss entsprechend gestaltet werden. Schauen wir uns ein Beispiel eines Shell-gesteuerten PHP-residenten Prozesses an.

Kopieren Sie den Code. Der Code lautet wie folgt:

#!/bin/sh
#Dateiname test.sh
#Suchen Sie unbedingt den Speicherort der Datei und ändern Sie ihn nicht mit dem Ausführungsverzeichnis
cd $(cd "$( dirname "$0")"; pwd)
readonly path=$(pwd)/
file=$1;
runfile="${path}data/${file}.run"
diefile="${path}data/ ${file}.die"
readonly file="${path}${file}.php"
if [ ! -f "$file" ]; then
  echo "bitte wählen Sie eine vorhandene Datei aus"
elif [ ! - f "$runfile" ]; then
#Judge hier, bedeutet das, dass der Prozess nicht existiert
echo $$>${runfile}
while true
if [ ! -f $diefile ]; then
# Wenn die Diefile-Datei hier nicht vorhanden ist, bedeutet dies, dass das Programm weiterhin ausgeführt wird, andernfalls ruft es else auf und führt den Exit-Vorgang aus
                                                                                                                                 ​​​ #Wenn die Diefile-Datei vorhanden ist, runfile beenden mit diefile
#Hier ist ein Versuch, den Prozess zu starten, wenn runfile existiert
newpid=`ps aux | " | awk '{print $2}'`
if [[ $oldpid -eq $newpid ]]; then
# Wenn die Prozessnummer in Runfile mit der prozeduralen Prozessnummer übereinstimmt, die ausgeführt wird, zeigt dies an, dass alles in Ordnung ist^_ ^
echo „der Prozess wird jetzt ausgeführt“
Beenden
sonst
# Wenn der Zielprozess der Zielprozess ist, bedeutet dies, dass ein Problem mit dem Prozess vorliegt und der laufende Prozess beendet wird '{print $2}' |. grep -v $$ |. & gt; $ {PATH}/data/error
fi
fi


Rufen Sie das PHP-Programm auf. Diese Methode zum Ausführen eines residenten Prozesses
Wenn die Runfile vorhanden ist, die Prozessnummer jedoch nicht mit dem Prozess übereinstimmt, der beendet werden soll (d. h. dort, wo das rote Sonst ausgeführt wird), müssen Sie „grep -v $“ verwenden $`, um die aktuell laufenden Prozesse herauszufiltern, andernfalls werden sie alle abgebrochen und die folgenden werden nicht ausgeführt. Ein weiterer Punkt ist der automatische Neustart, der in der Crontab platziert und ausgeführt werden kann eine Weile. Die spezifische Situation ist spezifisch.

Code kopieren Der Code lautet wie folgt:

crontab -e
#Öffnen Sie den Zeitplan des aktuellen Benutzers und fügen Sie den Modus hinzu.
#Der Zeitplan enthält 5 Sternchen: f1, f2, f3, f4, f5,
#, wobei f1 steht Minuten, f2 steht für Stunde, f3 steht für Tag, f4 steht für Monat, f5 steht für den Wochentag
#* steht für jede Minute/Stunde/Tag/Monat/Woche, */n steht für alle n Minuten/Stunde/.... .Einmal ausführen
*/2 * * * * /root/test.sh
#Einmal alle 2 Minuten ausführen


Diese vollständige residente Prozessfunktion ist abgeschlossen. Wenn Sie den Prozess beenden möchten, müssen Sie nur zu gehen das entsprechende Verzeichnis. Berühren Sie einfach ${diefile}.

Das obige ist der detaillierte Inhalt vonBeispielcodeanalyse für den Linux-Daemon-Prozess. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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