Programing

서버 죽을때 간단하게 자동 재실행 시키기

Medeev 2016. 12. 21. 21:45
서버 프로그래밍을 하고 간단한 프로젝트를 서비스할때 오픈초기에는 서버가 죽을일이 발생한다. 최대한 안정성있게 서버프로그래밍을 하였더라도 사람인 이상 서버가 안죽을 일은 없다고 생각한다. 서비스가 계속진행되가면서 오류도 발견하고 안정성 있는 서버가 되겠지만 초기에는 서버가 죽는것을 지켜보고만 있을 수 없다.

서버의 상황을 모니터링하고 서버가 죽으면 재시작할 수 있는 프로그래밍을 해둬야 하는것은 당연하지만 빠르게 개발하고 서비스 해야하고 이런것에 신경쓸 여유가 없다고 생각한다면 아래와 같은 방법으로 가볍게 서버를 감시하고 재시작 시킬수 있는 방법이 있다.

간단하게 윈도우즈 작업스케쥴러를 이용하는 방법이다.
배치파일로 서버가 살았는지 죽었는지를 판단하고 죽었을때는 시작하는 내용을 작성한다. 그리고 스케줄러에 등록만 하면 되는것이다.

방법은 아래와 같다.

  • 배치파일 작성

@echo off

SETLOCAL EnableExtensions

set EXCUTE_EXE=Server.exe

FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXCUTE_EXE%"') DO IF %%x == %EXCUTE_EXE% goto FOUND

echo Not running

start %EXCUTE_EXE%

echo Start %EXCUTE_EXE%!!!!

goto FIN

:FOUND

echo Running

:FIN

::pause>nul


  • 윈도우 작업스케줄러에 배치파일 실행 등록합니다.
    • 작업스케줄러를 띄운다.
      • )윈도우 실행 ->Taskschd.msc

    • 작업만들기를 클릭합니다.

      • 사용자 로그온여부 관계없이 실행(암호 저장안함)으로 설정합니다.

      •  이름을 설정하고 트리거탭으로 이동하여 새로 만들기 클릭합니다.

      • 새트리거 만들기는 아래의 고급설정입니다.

      • 작업만들기의 동작탭에서 새로 만들기로 아래와 같이 설정합니다.

        • 프로그램/스크립트항목에 처음에 만든 배치파일을 등록합니다.

          • ) process_live_check.bat

        • 시작위치(옵션)(T)

        • )D:\work\Server\_bin\Release\

        • 확인후 스케줄러 실행합니다. 실행하지 않아도 5분후에 자동으로 실행합니다.