用shell寫守護進程(原創) - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 用shell寫守護進程(原創) (http://www.webasp.net/article/8/7737.htm) |
| -- 作者:未知 -- 發佈日期: 2003-09-13 |
| 設想:用一個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 ] do wait $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 '{print $1}'|xargs kill sleep 2 ps ax|grep php |grep -v grep|awk '{print $1}'|xargs kill echo "kill php done" 利用這個原理,可以實現很多後台程序的吊線問題 |
| webasp.net |