监控activemq的服务是否正常运行

/etc/rc.local 里加入开机启动命令:

nohup /www/web/activemq.sh >>/www/web/activemq.log 2>&1 &
#!/bin/sh
DIR=/www/web
INTERVAL=1 ##等待时间
nohup php ${DIR}/activemq.php >>${DIR}/activemq.log 2>&1 & echo $! > ${DIR}/activemq.pid while [ 1 ]; do
    if [ ! -d /proc/cat ${DIR}/activemq.pid ]; then
        nohup php ${DIR}/send.php >>${DIR}/activemq.log 2>&1 & echo $! > ${DIR}/activemq.pid        echo 'NEW_PID:'cat ${DIR}/activemq.pid && date '+%Y-%m-%d %H:%M:%S'    fi
    sleep ${INTERVAL}done
nohup 表示忽略SIGHUP信号(编号1),比如退出终端时发送的SIGHUP信号(kill -SIGHUP PID)会被忽略掉.
>>${DIR}/activemq.log 表示把标准输出重定向(>>表示追加,>表示覆盖)到文件activemq.log
2>&1 表示将标准错误(2:stderr)重定向到标准输出(1:stdout).
结尾加上&表示将命令放入后台运行.
$! 表示前面运行在后台的PHP进程PID.

网上另外一个写法。

#!/bin/bash
EMAIL='xxx@xx.com' ##邮箱
start(){
        c=ps w -C php|grep $1|wc -l
        if [ $c -lt 1 ]
        then
          if [ -f "$1" ];then
          /usr/local/php/bin/php $1 > /dev/null &
          else
          echo 'no such file '$1 | mail -s 'process check error' $EMAIL
          fi
        fi
        }
BASE_PATH=dirname $0"/"
cd $BASE_PATH

start del_old_sessions.php