博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发监控Web 服务的Shell脚本
阅读量:4221 次
发布时间:2019-05-26

本文共 1804 字,大约阅读时间需要 6 分钟。

解决问题场景: 使用while守护进程的方式,每隔10秒确定一次网站是否正常。

脚本 website_mon.sh 如下:

#!/bin/bash. /etc/init.d/functions 	#引入函数库check_count=0# 定义检测的URL数组,包含多个URL地址url_list=( http://www.baidu.comhttp://www.baidu100.comhttp://127.0.0.1)function wait(){    echo -n '3秒后,执行检查URL操作.';    for ((i=0;i<3;i++))    do	echo -n "."; sleep 1    done    echo}function check_url()	#<==定义检测URL的函数{    wait #<==执行倒计时函数    for((i=0;i<`echo ${#url_list[*]}`;i++)) #<==循环数组元素    do	wget -o /dev/null -T 3 --tries=1 --spider ${url_list[$i]} >/dev/null 2>&1					#<==检测是否可以访问数组元素的地址	if [ $? -eq 0 ]			#<==如果返回值为0,则表示访问成功	    then	       action "${url_list[$i]}" /bin/true #<==优雅地显示成功结果	else	       action "${url_list[$i]}" /bin/false #<==优雅地显示失败结果	fi    done    ((check_count++)) #<==检测次数+1}main(){			#<==定义主函数    while true		#<==开启一个持续循环    do	check_url	#<==加载检测url的函数    	echo "--------------check count:${check_count}-------------------"	sleep 10		#<==间歇10秒    done}main		#<==调用主函数运行程序

分析:

采用Shell数组的方法,同时检测多个URL是否正常,并给出专业的展示效果,是实际工作中可用的脚本

. /etc/init.d/function引入函数库,才能够使用actoin“${url_list[$i]}” /bin/true或者action“${url_list[$i]}” /bin/false,效果如下:

可以更专业的显示输出结果。

for((i=0;i<`echo${#url_list[*]}`;i++)) 这里面的echo ${#url_list[*]}为输出url_list数组的个数。

wget-o /dev/null -T 3 --tries=1 --spider ${url_list[$i]} >/dev/null 2>&1 这句wget的用法比较复杂,我们具体分析下:

wget-o /dev/null : wget -o 下载信息保存到指定文件中,比如:wget -o tim.zip 文件中,这里wget -o /dev/null 即将下载的内容丢到垃圾箱(/dev/null)。

--spider: 不下载任何文件

--tries=1:重试次数为1次,wget默认重试20次连接下载文件

-T3: 设置超时时间为3秒

>/dev/null2>&1: 表示标准输出和错误输出都重定向到/dev/null

其他脚本都比较容易理解。

补充:

1、如何监控nginx的一个简单脚本:

脚本nginx_mon.sh如下

#!/bin/bashif [ `netstat -tlunp|grep nginx|wc -l` -gt 0 ] #过滤进程名为mysqld,转成数字    then        echo "Nginx is Running."    else        echo "Nginx is Stopped."        /data/program/nginx/sbin/nginxfi

2、上述中如果检测到异常可以用到邮件相关通知功能,见博客: 
我的博客:
你可能感兴趣的文章
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Android中Java代码和XML布局效率问题
查看>>
android TextView属性大全(转)
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
《浪潮之巅》1 AT&T
查看>>
《浪潮之巅》2蓝色巨人 IBM公司
查看>>
《浪潮之巅》3水果公司的复兴
查看>>
《浪潮之巅》4计算机工业的生态链
查看>>
《浪潮之巅》5奔腾的芯 英特尔公司
查看>>
python语言程序设计基础笔记(三)从题目到方案
查看>>
读取txt文件出现出现多余空行问题
查看>>
从理论到实践开发自己的聊天机器人
查看>>
@***装饰器(python)
查看>>
最优化算法之梯度下降法
查看>>
激活函数之ReLU函数
查看>>
经典排序算法详解
查看>>
概述类加载器及类加载过程
查看>>
MySQL SQL优化总结
查看>>
MySQL MyISAM引擎的读锁与写锁
查看>>