#!/bin/bash
#Date: 15:46 2021-04-09
#Author: yang
#Email: 251535288@qq.com
#Function: Monitor nginx startup
#Version: 0.1
. /etc/init.d/functions #加载函数库,Nginx_server等用到
GREEN='\033[32m' #定义绿色
GREEN_END='\033[0m' #同上
TIME=$(date "+%Y-%m-%d %H:%M:%S") #标准的时间
############### 检查nginx进程
function Nginx_PROCESS(){
NGINX_LINE=`netstat -anput | grep nginx | wc -l` #定义检测Nginx是否运行,通过wc命令获取行号
if [ "$NGINX_LINE" -ne 0 ] #$NGINX_LINE结果 非0正常运行 0停止运行
then
echo -en "${GREEN} Nginx is running!\n${GREEN_END}" #输出
else
Nginx_RUN #调用Nginx_RUN函数运行nginx
action "$TIME Nginx pages cannot be obtained!" /bin/false >> /var/log/nginx_process_error.log
#输出检测失败,输出到/var/log/nginx_process_error.log日志中 【可以改成发送邮件】
fi
}
############### 检查nginx网页
function Nginx_WGET(){
####### wget命令参数 ##########
#--spider 模拟爬虫的行为去访问网站,但不会下载网页
#-q, --quiet 安静的访问,禁止输出,类似-o /dev/null功能
#-o, --output-file=FILE 记录输出到文件
#-T, --timeout=SECONDS 访问网站的超时时间
#-t, --tries=NUMBER 当网站异常时重试网站的次数
wget --spider -q -o /dev/null --tries=1 -T 5 http://localhost
if [ "$?" -ne 0 ] #如果以上wget获取本地的url值:0 成功
then
Nginx_RUN #调用Nginx_RUN函数运行nginx
action "$TIME Nginx pages cannot be obtained!" /bin/false >> /var/log/nginx_wget_error.log
#输出检测失败,输出到/var/log/nginx_url_error.log日志中
fi
}
############### 重新运行nginx
function Nginx_RUN(){
nginx #运行nginx
}
############### 停止运行Keepalived
function KEEPALIVED_STOP(){
NGINX_LINE=`netstat -anput | grep nginx | wc -l` #定义检测Nginx是否运行,通过wc命令获取行号
if [ "$NGINX_LINE" == 0 ]; then
pkill -9 keepalived #杀掉Keepalived
fi
}
############### 主函数
function main(){ #定义总函数
Nginx_PROCESS #调用Nginx_PROCESS函数测试nginx服务器是否正在运行
Nginx_WGET #调用Nginx_WGET函数测试nginx服务器是否正在运行
KEEPALIVED_STOP #调用KEEPALIVED_STOP函数
}
main #结束main函数