近期花時間研究了一下windows和linux下某服務停了后自動重啟的功能,在網上收集了些資料,並經過測試,在此整理一下。這里介紹的是windows服務的監控,是通過批處理來實現的。本例是監控windows的Computer Browser為例,每60秒檢測一次(可根據實際需要調整間隔),當發現服務停止后自動重啟。AutostartService.bat批處理文件內容如下
@echo off
rem 定義循環間隔時間和監測的服務:
set secs=60
set srvname="Computer Browser"
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
雙擊該批處理文件,運行界面如下
========================================
== 查詢計算機服務的狀態, ==
== 每間隔60秒種進行一次查詢, ==
== 如發現其停止,則立即啟動。 ==
========================================
此腳本監測的服務是:"Computer Browser"
如果Computer Browser停止后,該批處理檢測到后會重啟該服務,界面如下
========================================
== 查詢計算機服務的狀態, ==
== 每間隔60秒種進行一次查詢, ==
== 如發現其停止,則立即啟動。 ==
========================================
此腳本監測的服務是:"Computer Browser"
Computer Browser 服務正在啟動 .
Computer Browser 服務已經啟動成功。