用shell寫守護程序

2021-04-21 19:11:25 字數 1512 閱讀 6265

設想:用乙個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...