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掉自己的进程。