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

 

+ Recent posts