监控php命令行程序shell

用php做值守进程实时处理数据是经常用到的,不过php做值守进程不是很稳定,经常会自动宕掉,有必要再写个shell做个监控,发现宕掉,立即重开一个进程。

假如被监控的程序叫mytask.php,监控脚本如下:

#/bin/sh
while true; do
  count=`ps -fe |grep "mytask" | grep -v "grep"`
  if [ "$?" != "0" ]; then
   /usr/local/webserver/php/bin/php /var/www/html/mytask.php
  fi
  sleep 2
done

其实就是调用grep命令,统计一下进程名是mytask的个数,当然要去掉grep mytask本身这个进程,如果没有mytask进程在跑,就起一个进程,如此而已。

假如这个监控进程也宕掉呢?那就要把监控进程写到crontab里,每分钟跑一次吧,然后shell里while循环去掉,原本这个sh也是值守进程,去掉while运行完就会自动结束掉。