設想:用乙個shell檢視乙個後台執行的php程式是否非正常退出
如果退出,利用守護程序自動restart.
類似mysql的safe_mysqld
共3個程式
shstart.sh 負責啟動
sh.sh 守護程序主程式
shstop.sh 安全退出守護程序和php程式主體
/**************************/
shstart.sh
#!/usr/local/bin/bash
/home/phpshell/sh.sh &
shpid="$!";
echo "$shpid" > /home/phpshell/sh.sid
/**************************/
sh.sh
#!/usr/local/bin/bash
php="/usr/local/bin/php"
program="/www/time.php"
#start dameo
$php $program &
chpid="$!";
echo "$chpid" > /home/phpshell/php.sid
echo "child pid is $chpid"
echo "status is $?"
while [ 1 ]
dowait $chpid
exitstatus="$?"
echo "child pid=$chpid is gone, $exitstatus" >> /home/phpshell/phperror.log
echo `date` >> /home/phpshell/phperror.log
echo "**************************" >>/home/phpshell/phperror.log
sleep 10
$php $program &
chpid="$!";
echo "$chpid" > /home/phpshell/php.sid
echo "next child pid is $chpid"
echo "next status is $?"
echo "userkill is $userkill"
done
/******************************/
shstop.sh
#!/usr/local/bin/bash
chpid="`cat sh.sid`";
kill $chpid;
echo "kill sh.sh done!"
ps ax|grep php |grep -v grep|awk ''|xargs kill
sleep 2
ps ax|grep php |grep -v grep|awk ''|xargs kill
echo "kill php done"
利用這個原理,可以實現很多後台程式的吊線問題
用shell寫守護程序指令碼
乙個udhcpd與udhcpc的守護,目前只會用shell模仿編寫,還有什麼方法可以做守護呢?bin sh 程序名字可修改 pro name udhcpc wlan ra0 while true do 用ps獲取 pro name程序數量 num ps aux grep grep v grep wc...
用管道寫守護程序
用管道寫守護程序,我寫了兩個函式,乙個讀函式,乙個寫函式,讀函式裡判斷寫的函式是否向管道裡寫了東西,如果寫了,直接讀取顯示,如果沒寫,就會讓其再次執行,然後顯示,我寫的比較簡單,主要是方便理解,實際應用的程式絕對不會像我這樣。下面是我的write函式 include include include ...
用shell指令碼守護後台程序
假如現在在 crond 中新增了乙個每分鐘執行的定時任務如下 1 root cd data sbin sh test.sh dev null 2 1 為了防止上乙個程序還沒完成,下乙個程序就啟動,我們可以建立乙個shell來守護該程序,方法如下 bin sh ps aux grep test ini...