zoukankan      html  css  js  c++  java
  • shell习题第13题:监控nginx进程

    【题目要求】

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

    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
  • 相关阅读:
    multimap-begin
    multimap-constructors
    multimap-constructors
    map-rend
    map-rend
    map-rbegin
    map-rbegin
    lower_bound
    纪念邓小平同志诞辰110周年,2014年出品的48集电视剧《历史转折中的邓小平》
    二叉查找树(二叉排序树)的详细实现,以及随机平衡二叉查找树Treap的分析与应用
  • 原文地址:https://www.cnblogs.com/dingzp/p/10983979.html
Copyright © 2011-2022 走看看