zoukankan      html  css  js  c++  java
  • shell脚本监控nginx 进程是否运转

    通常看进程是否运行可以通过输入指令 ps -ef|grep nginx 来查看

    但是要通过脚本来查看改如何实现呢, 其实这类的实现方法并不单一,有很多方法,今天我们就来例举2个;

    1.第一个通过ps -ef|grep xxx  在grep 指令里面有一个 grep -vc grep 会返回运行线程的数量,

    #!/bin/bash
    name=nginx
    num=$(ps -ef|grep $name |grep -vc grep)
    if [$num ge 1 ]; then
        echo "$name is running!"
    else
        echo "$name is not running!"
    fi
    

    2.通过curl 指令,也比较推荐这个方法,因为curl不但可以验证进程是否正常,可以完全验证服务是否可以正常访问,

    #!/bin/bash
    Resettem=$(tput sgr0)
    ServerAddr='http://111.222.333.444:8080/';
    arr_server=('index.html' 'AAAA' 'BBBB');
    
    Check_Server_Status()
    {
    	
    	for((i=0;i<${#arr_server[@]};i++)){
    	
    		ServerUrl=$ServerAddr${arr_server[i]}
    		Status_code=$(curl -m 10 -s -w %{http_code} ${ServerUrl} -o /dev/null) #-m/--max-time <seconds> 指定处理的最大时长; -w/--write-out <format> 在数据传输完成后,输出和本次传输相关的参数信息,比如 hea
    der 的大小、下载速度等
    		echo "requestUrl" $ServerUrl;
    		if [ $Status_code -eq 000 -o $Status_code -ge 400 ];then #000是请求服务无响应的一个状态码
    			echo -e 'E[32m' "check http error!Response status code is"  $Resettem $ServerUrl $Status_code
    		
    			echo "check server ${ServerUrl} ${Status_code} error at $(date +%Y-%m-%d) $(date +%H:%M:%S), pls have a check right now!" | mail -s "${ServerUrl}${Status_code}"  1234567890@qq.com #这部分是对请求不成功,
      #发邮件通知用户,echo 的内容是邮件正文,-s 是邮件的主题 else Http_content=$(curl -s ${ServerUrl}) echo -e 'E[32m' "check http server ok! " $Resettem $Http_content fi } }

    对于结果,如果访问不通过可以,触发邮件通知用户。

    对于发邮件,

    1.需要安装sedmail 模块

    2.下面是收到的邮件,比较简洁,如果需要更详细,可以自定百度查看发邮件的详细配置

      

    然后通过crontab -e 把脚本加入到定时任务里面,可以只是每5分钟运行一次检查nginx 服务器是否在运行。

  • 相关阅读:
    金牙与肉屑
    科学研究的动机以及雄心
    适度的自我吹嘘
    ubuntu12启用root账户
    有很多文件夹是受系统保护的
    vs2012换肤功能,vs2012主题及自定义主题
    Ubuntu navicat for mysql 安装和使用
    Asp.Net MVC4 Bundle捆绑压缩技术
    64位Windows Jmail组件报错解决方案
    C#检测上传文件的真实类型
  • 原文地址:https://www.cnblogs.com/sucretan2010/p/13338208.html
Copyright © 2011-2022 走看看