开发监控Web 服务的Shell脚本
2017-08-10 00:19
495 查看
解决问题场景: 使用while守护进程的方式,每隔10秒确定一次网站是否正常。
脚本 website_mon.sh 如下:
分析:
采用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 http://www.baidu.com,然后百度的内容页变会被保存到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如下:
2、上述中如果检测到异常可以用到邮件相关通知功能,见博客: 我的博客:Linux
对外发送邮件功能
脚本 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 下载信息保存到指定文件中,比如:wget -o tim.zip http://www.baidu.com,然后百度的内容页变会被保存到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/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
2、上述中如果检测到异常可以用到邮件相关通知功能,见博客: 我的博客:Linux
对外发送邮件功能
相关文章推荐
- linux Web服务程序监控shell脚本
- Shell脚本监控WEB服务是否正常
- shell脚本监控tomcat服务运行状态,服务关闭后进行重启
- shell脚本---web监控脚本系列
- 实战模拟监控MySQL服务shell脚本小结
- linux运维学习shell脚本监控nginx服务
- Linux基础之-利用shell脚本实现自动监控系统服务
- 实战模拟监控MySQL服务shell脚本小结
- 监控php-fpm并自动重启服务的shell脚本
- 实战模拟监控MySQL服务shell脚本小结
- 网站web服务质量监控python脚本
- linux服务(web/mysql/disk/memory)监控和邮件报警脚本
- 4000 一个简单的监控mysql服务的shell脚本
- SHELL脚本实现服务宕机监控自动重启
- shell 代码 进程监控脚本,拉起core dump的服务器进程,以维持服务稳定
- shell脚本 监控 web服务器状态
- 通过Shell开发企业级专业服务启动脚本案例(MySQL)
- 监控Nginx服务的Shell脚本
- shell实现web服务进程监控并自动重启
- 010-- 开发脚本自动部署nginx_web和nfs及监控内存