Bat批处理监控window服务,当服务停止后自动重启(例如监控phpstudy软件的apache服务)

场景需求:

假如你只是一个写代码的程序员,可能永远不会接触到这一块,可以直接跳过本文章; 但假如你是一名站长,或者运维工程师,就很有必要学会这一招。网站都是放在服务器上运行的,php一般都会使用apache,如果httpd.exe线程出现异常,就可能导致apache服务直接停止工作(apache假死、罢工),网站就404无法访问了。这时候用户可能就炸锅了,网站怎么回事呀,突然就打不开了,是不是跑路了?在这种情况下,站长或者运维工程师,如若能第一时间发现,然后立马重启apache,就不会有多大影响,但假如你没有第一时间发现,或者你没在电脑旁,远在千里之外,可谓是远水救不了近火,这很可能就会造成不小的损失。一般大公司都会有运维24小时监控网站运行状态,服务器运行状态,小公司和个体微用户就很有必要写一个可以监控服务运行状态的脚本了。

脚本代码:

@echo off
rem 定义循环间隔时间和监测的服务:
set secs=10
set srvname="apache"

echo.
echo ========================================
echo == 查询计算机服务的运行状态 ==
echo == 每间隔%secs%秒钟进行一次查询 ==
echo == 如发现其停止,则立即启动 ==
echo ========================================
echo.
echo 此脚本监测的服务是:%srvname%
echo.

if %srvname%. == . goto end

:chkit
set svrst=0
for /F "tokens=1* delims= " %%a in ('net start') do if /I "%%a %%b" == %srvname% set svrst=1
if %svrst% == 0 net start %srvname%
set svrst=
rem 下面的命令用于延时,否则可能会导致cpu单个核心满载。
ping -n %secs% 127.0.0.1 > nul
goto chkit

:end

代码备注:secs是间隔时间,srvname是服务名称

使用方法:

新建一个监控服务.bat,复制上面的代码,保存后双击运行即可。

补充说明:

phpstudy的Apache服务名是:Apache2a

你可能感兴趣的:(服务器)