1. 체크해야 할 서비스를 검사하고 다시 시작해 주는 batch 파일을 만듭니다.
파일명 : CSMessengerServer.bat
@echo off
rem set /a myStopper=0
:LOOP
rem Checking... Core Messenger Server
for /F "tokens=3 delims=: " %%H in ('sc query "Core Messenger Server" ^| findstr "상태"') do (
if /I "%%H" NEQ "RUNNING" (
rem not running
echo ================ >> CSMessengerStart.log
date /t >> CSMessengerStart.log
time /t >> CSMessengerStart.log
echo Core Messeger Server stopped. now starting... >> CSMessengerStart.log
net start "Core Messenger Server" > NUL
) else (
rem running
rem %%H
)
)
ping -n 30 127.0.0.1 > NUL
rem set /a myStopper+=1
rem echo %myStopper%
rem if %myStopper% GEQ 10 goto QUIT
goto LOOP
:QUIT
rem : 주석으로 모두 삭제하셔도 됩니다. 테스트로 쓴 것도 있으니까요.
sc query "서비스명" : 서비스명으로 등록되어 있는 서비스의 정보를 가져옵니다.
findstar "상태" : 위 정보중에서 "상태"라는 단어가 있는 부분만 가져옵니다.
token=3 : 세번째 항목이 RUNNING 이면 실행중, 아니면 정지된 것으로 판단합니다.
실행중이 아니면 로그에 남기고, net start 로 서비스를 시작합니다.
2. batch 파일을 윈도우즈 서비스에 등록합니다.
bat_service_register.zip
MS의 rktools.exe에 있는 툴들이다.
http://www.microsoft.com/en-us/download/details.aspx?id=17657
압축파일안에 instsrv.exe, srvany.exe를 c:\windows\system32에 복사합니다.
CSMessengerStart.bat도 system32에 복사합니다.
c:\windows\system32\instsrv.exe [추가할 서비스명] c:\windows\system32\srvany.exe
여기선 추가할 서비스명이 "CSMessengerStart"
regeidt로 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[추가한 서비스명]에
Parameters키 생성하고 그안에 문자열 Application, AppDirectory, AppParameters을 생성한다.
Application에 c:\windows\system32\CSMessengerStart.bat
AppDirectory에 c:\windows\system32
AppParameters는 비워놓는다.
서비스 CSMessengerStart를 시작하고, 체크할 서비스를 정지시킨다.
체크할 서비스가 재시작하면 로그를 확인한다.
c:\windows\system32\CSMessengerStart.log