教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 检测apache与nginx的80端口并自动重启的脚本

检测apache与nginx的80端口并自动重启的脚本

发布时间:2014-08-29   编辑:jiaochengji.com
检测apache与nginx的80端口并自动重启的脚本,感兴趣的朋友可以参考下。

    检测apache与nginx的80端口并自动重启的脚本,感兴趣的朋友可以参考下。

    apache 80 端口检测与自启动,nginx 80端口的检测与自启动。
    此脚本可以在apache在参数都设置正常的情况崩溃后自动重启web,但是如果是配置参数导致的崩溃脚本没有办法帮你启动,但是会用邮件的形式通知你80端口异常。

    发送邮件到外网邮箱的配置可以参考这篇文章:http://www.jiaochengji.com/article/2609.html
   推荐发送到139邮箱或者QQ邮箱(QQ邮箱利用微信来收,有邮件会跟短信一样有声音)。

先来看apache的监测脚本。
cat apache_safe.sh
 

复制代码 代码如下:
#!/bin/bash
IP=`ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk -F ' ' '{print $2}'| awk -F':' '{print $2}'| head -n 1`   \\获取IP 地址
echo "">/root/jiankong_log/apache_tmp.log
DATE=`date +%Y-%m-%d" "%H:%M` 
netstat -ntl | awk '{print $4}' | grep ":80$"   //检测是否监听80
if [ $? != 0 ];then   //如果没有监听80 则执行
   echo "$DATE  apache is error, Try to starting...." >>/root/jiankong_log/apache.log >>/root/jiankong_log/apache_tmp.log
   /usr/local/apache2.2.0/bin/httpd -k start       //启动apache
   netstat -ntl | awk '{print $4}' | grep ":80$"      //检验80
  if [ $? == 0 ];then    //如果启动成功 记录日志
       echo "$DATE  apache start ok" >>/root/jiankong_log/apache.log
       else       //如果启动失败 记录日志 并邮件通知
       echo "$DATE  apache start ERROR, will send mail to administrator" >>/root/jiankong_log/apache.log >>/root/jiankong_log/apache_tmp.log
       /usr/local/mutt/bin/mutt -s ""$IP"-apache" 281450202@qq.com -c 1516070****@139.com </root/jiankong_log/apache_tmp.log && echo "$DATE send OK" >>/root/jiankong_log/apache.log
   fi
else
   echo "$DATE nothing" >>/root/jiankong_log/apache.log    // 没有任何异常,统计用。
fi

下面这个是监测nginx 80端口的脚本。
cat nginx_safe.sh
 

复制代码 代码如下:
#!/bin/bash
IP=`ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk -F ' ' '{print $2}'| awk -F':' '{print $2}'| head -n 1`
echo "">/root/jiankong_log/nginx_tmp.log
DATE=`date +%Y-%m-%d" "%H:%M`
netstat -ntl | awk '{print $4}' | grep ":80$"
if [ $? != 0 ];then
echo "$DATE  nginx is error, Try to starting...." >>/root/jiankong_log/nginx.log >>/root/jiankong_log/nginx_tmp.log
/usr/local/nginx/sbin/nginx
 netstat -ntl | awk '{print $4}' | grep ":80$"
  if [ $? == 0 ];then
     echo "$DATE  nginx start ok" >>/root/jiankong_log/nginx.log
  else
   echo "$DATE  nginx start ERROR, will send mail to administrator" >>/root/jiankong_log/nginx.log >>/root/jiankong_log/nginx_tmp.log
   /usr/local/mutt/bin/mutt -s ""$IP"-nginx" 281450202@qq.com -c 1516070****@139.com </root/jiankong_log/nginx_tmp.log && echo "$DATE send OK" >>/root/jiankong_log/nginx.log
  fi
else
echo "$DATE nothing" >>/root/jiankong_log/nginx.log
fi

    脚本很简单,不过功能还是可以的,放在计划任务里面每隔5分钟执行一次。防止网站挂了,你还不知道。只要能解决问题,方法不怕山寨。
    shell有很多中测试端口是否正常访问的方法,nmpa  telnet  curl  wget都可以,看个人喜好吧,个人感觉netstat有时候比较耗时。

原作者:李坤山
博客:http://blog.163.com/a12333a_li/

您可能感兴趣的文章:
检测apache与nginx的80端口并自动重启的脚本
nginx反向代理/负载均衡配置
php运行在什么服务器上?
apache 怎么安装
phpstudy在配置域名后apache无法开启的解决方案
如何在CentOS和RHEL和Fedora上安装NGINX Web服务器
Nginx负载均衡和LVS负载均衡的比较分析
nginx支持php吗
php集群如何实现
PHP与nginx之间的运行机制及其原理

[关闭]
~ ~