码迷,mamicode.com
首页 > 系统相关 > 详细

shell习题第13题:监控nginx进程

时间:2019-06-06 12:26:51      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:bre   art   sleep   bin   ash   需要   自动重启   one   要求   

【题目要求】

在服务器上写一个脚本,要求如下

1. 每隔10秒去检查而一次服务器上的nginx进程数,如果>=500的时候,就需要自动重启一下nginx服务,并检测启动是否成功

2. 如没有正常启动还要再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且之后不需要再检测

3. 如果启动成功之后,1分钟后再次检测nginx进程,若正常则重复之前的操作(每隔10秒检查一次),若还是>=500,那放弃重启并需要发邮件给管理员,然后自动退出脚本。假设发邮件脚本为mail.py

【核心要点】

pgrep -l nginx 或者 ps -C nginx --no-heading检查进程

如何计数5次

【脚本】

#!/bin/bash
check_service()
{
    c=0
    for i in `seq 1 5`
    do
        /usr/local/nginx/sbin/nginx -s restart 2> /tmp/nginx.err
        if [ ! $? -eq 0 ]; then
            c=$[$c+1]
        else
            break
        fi
    done

    if [ $c -eq 5 ]; then
        python mail.py 110.qq.com "nginx进程数大于500,重启失败" "head -l /tmp/nginx.err"
        exit
    fi
}

while :
do
    n=`ps -C nginx --no-heading | wc -l`
    if [ $n -ge 500 ]; then
        check_service
        sleep 60
        n_new=`ps -C nginx --no-heading | wc -l`
        if [ $n_new -ge 500 ]; then
            python mail.py 110.qq.com "nginx重启1分钟后进程数仍然大于500,重启失败" "清登陆服务器检查问题吧"
            exit
        fi
    fi
    sleep 10
done

 

shell习题第13题:监控nginx进程

标签:bre   art   sleep   bin   ash   需要   自动重启   one   要求   

原文地址:https://www.cnblogs.com/dingzp/p/10983979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!