Rumah > Artikel > Operasi dan penyelenggaraan > Analisis kod contoh proses daemon Linux
Peranan proses pemastautin dalam Linux tidak boleh diabaikan, tetapi masalah di dalamnya juga tidak boleh diabaikan Cara memulakan proses, cara menamatkan proses dan cara memulakan semula proses selepas ia mati mesti direka dengan sewajarnya. Mari lihat contoh proses pemastautin PHP yang dikawal oleh shell.
Salin kod Kod adalah seperti berikut:
#!/bin/sh
#filename test.sh
#Lokasi fail berada pada kedudukan mutlak dan tidak berubah dengan direktori pelaksanaan
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"
jika [ ! -f "$ fail" ]; maka
echo "sila pilih fail yang wujud"
elif [ ! wujud, ia bermakna proses itu tidak wujud , mulakan proses di bawah
echo $$>${runfile}
manakala benar
do
jika [ -f $diefile ] kemudian
#Di sini jika fail diefile tidak wujud, maka Menunjukkan bahawa atur cara terus dilaksanakan, jika tidak, ia memasuki lain dan menjalankan operasi keluar #Jika fail diefile wujud Kosongkan runfile dan diefile dan keluar
jika rm -rf $runfile && rm -rf $diefile; kemudian
keluar
fi
selesai
lain
#Ini wujud Dalam kes runfile, cuba mulakan proses
oldpid=`cat $runfile`
newpid=`ps aux |. grep "process.sh $1" | oldpid -eq $newpid ]]; maka
#Jika nombor proses dalam runfile konsisten dengan nombor proses sasaran yang sedang berjalan, semuanya baik-baik saja^_^
echo "proses sedang berjalan sekarang"
keluar
lain
#Jika nombor proses dalam runfile tidak sepadan dengan proses sasaran yang sedang berjalan, ini bermakna terdapat masalah dengan proses tersebut secara langsung dan tamatkan proses berjalan
echo "error situation,kill proses jalankan dan padamkan fail run"
ps aux | grep "process.sh $1" | grep -v 'grep' | awk '{print $2}' | grep -v $ $ | /data/error
fi
fi
fi
Hanya terdapat beberapa perkara yang perlu ditekankan:
Saya menggunakan shell ini untuk memanggil program php, Tiada had untuk ini . Apa yang saya ingin jelaskan di sini ialah kaedah menjalankan proses pemastautin ini
Apabila runfile wujud, tetapi nombor proses tidak sepadan dengan proses pembunuhan (iaitu, di mana merah lain dilaksanakan), anda mesti `grep -v $$`, fungsinya adalah untuk menapis proses yang sedang berjalan, jika tidak, ia akan dimatikan, dan yang berikutnya tidak akan dilaksanakan
Satu lagi perkara yang perlu diberi perhatian ialah tentang mula semula automatik
Mula semula automatik Ia boleh diletakkan dalam crontab dan dilaksanakan sekali-sekala Situasi khusus akan dirawat mengikut kes.
Salin kod Kod adalah seperti berikut:
crontab -e
#Buka jadual pengguna semasa dan tambah mod
# dengan f1 mewakili minit, f2 mewakili jam, f3 mewakili hari, f4 mewakili bulan, f5 mewakili hari dalam seminggu
#* mewakili setiap minit/jam/hari/bulan/ minggu , */n bermaksud melaksanakan sekali setiap n minit/jam/...*/2 * * * * /root/test.sh
#Laksanakan sekali setiap 2 minit
Atas ialah kandungan terperinci Analisis kod contoh proses daemon Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!