用bat实现重新启动服务器的IIS服务器
网站不知何缘故,运行一段时间老是挂掉,重新启动IIS又恢复正常。
这种情况发生一次两次也就算了,可恶的是天天发生,总不能天天跟IIS作斗争吧。
想偷懒,就得动脑筋,找批处理。
设想:写一个批处理,每小时重新启动一次IIS,运行24次。
在做一个任务计划,每天运行一次这个批处理
技术储备:
IIS重新启动的dos命令:iisreset /restart
延时的命令:建立一个.vbs文件,内输入命令:wscript.sleep(20000)
在dos下调用.vbs文件:cscript s.vbs
循环命令:FOR /L %variable IN (start,step,end) DO command [command-parameters]
实现:
建立一个.vbs文件,如s.vbs
*************************************************
wscript.sleep(3600000)
*************************************************
说明:wscript.sleep(1000) 表示延时1秒
建立一个.bat文件,如a.bat
***********************************
for /l %%a in (1,1,24) do (
iisreset /restart
cscript //nologo s.vbs
time /t
)
***********************************
说明:for /l %%a in (1,1,24) do 表示循环执行24次
cscript //nologo s.vbs 表示调用执行s.vbs文件,//nologo表示不显示logo版本信息,不带此参数
亦可,不影响程序执行
by feng1725
附:
实际上Windows自带的计划任务可以完成每小时运行一次任务的要求
新建一计划任务,建完后,右击,计划任务属性–》日程安排–>高级
设置开始日期 勾选重复任务 设置每××小时 持续时间××天
建立一个.bat文件,如a.bat
***********************************
iisreset /restart
***********************************
注意:计划任务如果启动失败,可以查看日志查找原因
检查“任务计划”的日志
“任务计划”在 %SystemRoot% 文件夹(通常为 C:\Windows)中维护一个日志文件 – SchedLgU.txt。 您可从任务计划窗口中通过以下方法来查看日志:单击高级(菜单栏),然后单击查看日志。
日志文件的大小是 32KB,当日志文件达到其最大大小时,它自动从文件的开头开始记录新信息并覆盖旧的日志文件信息。
第一版
引用内容:
@echo off
c:
cd C:\vbs\iis
wget -s –spider -o iis.log ht003.newhi.net
grep "HTTP request sent, awaiting response…" iis.log |gawk ‘{print $6,$7}’ >iisstat.log
set /p iislog=<iisstat.log
if "%iislog%"=="" goto iisreset
if "%iislog%"=="200 OK" goto iisok
:iisreset
iisreset&iislog.bat
:iisok
echo %iislog%
第二版
引用内容:
@echo off
c:
cd C:\vbs\iis
for /f %%i in (‘netstat -an ^|wc -l’) do set max=%%i
if "%max%" GEQ "3582" goto :iisreset
wget -s –spider -o iis.log ht003.newhi.net
grep "HTTP request sent, awaiting response…" iis.log |gawk ‘{print $6,$7}’ >iisstat.log
set /p iislog=<iisstat.log
rem if "%iislog%" NEQ "200 OK" goto iisreset
rem if "%iislog%" EQU "200 OK" goto iisok
if "%iislog%"=="" goto iisreset
if "%iislog%"=="200 OK" goto iisok
:iisreset
for /f %%i in (‘udate +%%Y-%%m-%%d’) do set logdata=%%i
for /f %%i in (‘udate +%%H:%%M’) do set logtime=%%i
echo 在%logdata% %logtime% 连接数%max% 重新启动IIS >> iisreset.log
iisreset
:iisok
echo WEB服务器状态为%iislog%
echo 现在的连接数为%max%
以上脚本需要安装CYGWIN
此脚本不是简单的查看服务状态,而是通过判断动态网页返回值来判断.这样可以更准确,更及时彻底的让服务器对客户请求进行快速响应.
评论前必须登录!
注册