监控nginx 脚本,每20秒监测一次,如果进程数多于1000,重启nginx服务,重启5次失败后通知管理员,如果重启成功一分种后,进程数还是大于1000,通知运维

#!/bin/bash
d=`date`
c=`pgrep -l nginx | wc -l`
check_nginx()
{
  for  ((i=1;i<=5;i++))
  do
        /usr/local/nginx/sbin/nginx   2> /tmp/nginx.log
        if [ $? -eq 0 ]
        then
                echo "${d}nginx 重启${i}次成功" | mail -s "nginx 进程监控" [email protected]
                break
        fi
  done
}
while :
do
        if [ c -gt 1000 ]
        then
                check_nginx
                if [ $i -eq 5 ]
                then
                        echo "${d}nginx 5次重启失败,请登录服务器处理" | mail  -s "nginx 进程监控" [email protected]
                        exit
                else
                        sleep 60
                        c1=`pgrep -l nginx | wc -l`
                        if [ c1 -gt 1000 ]
                        then
                                echo "${d}nginx重启后进行仍大于1000,请登录服务器处理" | mail -s "nginx 进程监控" [email protected]
                                exit
                        fi
                fi
        fi
        sleep 20
done