linux进程监控shell脚本代码
为确保php页面在后台运行,写了一个监控脚本,假设程序异常退出,那么可以自动重启。
shell脚本/usr/local/scripts/receve.sh内容:
#!/bin/bash #funtion:keepreceve.phprunning PHP="/usr/local/php5/bin/php" PROGRAM="receve.php" #startdameo $PHP/home/httpd/$PROGRAM>>/usr/local/scripts/phpshell/receve.out& chpid="$!"; echo"$chpid">/usr/local/scripts/phpshell/receve.sid echo"childpidis$chpid" echo"statusis$?" while[1] do wait$chpid exitstatus="$?" echo"childpid=$chpidisgone,$exitstatus">>/usr/local/scripts/phpshell/receve.php_error.log echo`date`>>/usr/local/scripts/phpshell/receve.php_error.log echo"**************************">>/usr/local/scripts/phpshell/receve.php_error.log sleep10 $PHP/home/httpd/$PROGRAM>>/usr/local/scripts/phpshell/receve.out& chpid="$!"; echo"$chpid">/usr/local/scripts/phpshell/receve.sid echo"nextchildpidis$chpid" echo"nextstatusis$?" done
需要保证监控脚本正常运行,在每天凌晨自动重启脚本/usr/local/scripts/restart_r.sh,写入crontab:
#!/bin/bash
echo"">/tmp/receve_pid.txt
/bin/psax|/bin/grep"receve.sh"|/bin/grep-v"grep"|/bin/awk'{print$1}'>/tmp/receve_pid.txt
no1pid=`cat/tmp/receve_pid.txt|sort-r`
no2pid=`cat/usr/local/scripts/phpshell/receve.sid|sort-r`
if[-z$no1pid];then
echo"receve.shpidisnull,receve.shisnotrunning."
else
/bin/kill-9"$no1pid"
echo"receve.shkilled"
fi
sleep3
if[-z$no2pid];then
echo"receve.phppidisnull,receve.phpisnotrunning."
else
/bin/kill-9"$no2pid"
echo"receve.phpkilled"
fi
rm-rf/usr/local/scripts/phpshell/receve.sid
sleep3
/usr/local/scripts/receve.sh>/dev/null&
crontab:
#restartreceve.sh 1000***/usr/local/scripts/restart_r.sh
注意:脚本命名要避免重复,避免自己kill掉自己的进程。
