linux 下写个shell脚本来检测网站是否正常运行,如果无法正常访问,则重启相关服务,如 apache或nginx,相信对运维来说没什么难度,但是对于windows服务器管理员来说就比较苦恼了,下面我写了个批处理程序加linux下的开源软件wget来检测网站是否正常运行,如果发生异常则执行响应操作。
wget已经被编译成windows下可以运行的软件。以下是批处理源码,附件包含批处理及编译后的WGET,直接修改下网站地址,服务名称,在windows的计划任务里添加每分钟的计划任务即可。
@echo off
echo.>>wget.log
rem 使用wget下载网页首页文件,并记录日志
.\wget -a wget.log -d http://blog.sdxtjc.com/index.php
rem 判断index.html文件是否下载成功
if exist index.php goto end
echo.>>system.log
net stop apache
rem 停止apache服务,这里可以修改成你需要控制的WEB服务器,比如IIS
ping 127.0.0.1 -n 10
rem 休息10秒钟等服务停完,如果停的慢,可以改为20秒
net start apache
rem 启动apache服务,这里可以修改成你需要控制的WEB服务器,比如IIS
echo ---------------------------->>system.log
date/t>>system.log&&time/t>>system.log
echo error occurred>>system.log
rem
exit
:end
echo.>>system.log
echo ---------------------------->>system.log
date/t>>system.log&&time/t>>system.log
echo ok>>system.log
echo y|del .\index.php
rem 最后删除index.php供下次下载使用
exit
通过这个程序可以做到发现网站打不开后自动停止相关服务,过20秒钟自动再启动相关服务,达到自动化运维的目的,晚上再也不用被短信惊醒了。