频道栏目
首页 > 资讯 > 其他 > 正文

开发监控Web 服务的Shell脚本

17-08-11        来源:[db:作者]  
收藏   我要投稿

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

脚本 website_mon.sh 如下:

#!/bin/bash
. /etc/init.d/functions 	#引入函数库
check_count=0
# 定义检测的URL数组,包含多个URL地址
url_list=( 
http://www.baidu.com
http://www.baidu100.com
http://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 下载信息保存到指定文件中

--spider: 不下载任何文件

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

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

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

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

 

补充:

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

 

脚本nginx_mon.sh如下

#!/bin/bash
if [ `netstat -tlunp|grep nginx|wc -l` -gt 0 ] #过滤进程名为mysqld,转成数字
    then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /data/program/nginx/sbin/nginx
fi
相关TAG标签
上一篇:Java:身份证号的校验与生成
下一篇:关键帧逐帧蒙皮动画原理
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站