优化版:监控控windows服务,当服务停止后自动重启服务,保障服务正常运行(并以管理员身份运行bat)
·
监控控windows服务,当服务停止后自动重启服务,保障服务正常运行(并以管理员身份运行bat)
近期花时间研究了一下windows和linux下某服务停了后自动重启的功能,在网上收集了些资料,并经过测试,在此整理一下。这里介绍的是windows服务的监控,是通过批处理来实现的。本例是监控windows的主题Themes服务为例,每180秒检测一次(可根据实际需要调整间隔),当发现服务停止则自动重启服务。
新建一个记事本,连同扩展名一起并重命名为AutostartService.bat
批处理文件内容如下:
(注: 请在下方配置间隔时间和需要监测的服务 这里请替换为自己需要监控的服务名称,可以打开Windows服务功能通过查看服务属性来查询服务名称<不是显示名> )
@echo off title 监控windows服务,当服务停止后自动重启服务,保障服务正常运行 color 0a mode con cols=45 lines=30 :: 获取管理员权限 setlocal set uac=~uac_permission_tmp_%random% md "%SystemRoot%\system32\%uac%" 2>nul if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else ( echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs" echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs" echo WScript.Quit >>"%temp%\%uac%.vbs" "%temp%\%uac%.vbs" /f del /f /q "%temp%\%uac%.vbs" & exit ) endlocal rem 请在下方配置间隔时间和需要监测的服务:(e.g. 三分钟180秒 主题服务Themes) set secs=180 set srvname="Themes" 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
············
·
人生只若初见................

浙公网安备 33010602011771号