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秒钟自动再启动相关服务,达到自动化运维的目的,晚上再也不用被短信惊醒了。