[Python] 윈도우 서비스 스크립트 만들기 Develop Tip

리눅스에서는 C에서의 데몬 생성과 동일한 방법으로 데몬 프로세스를 만들어
Python 스크립트를 실행하면 되지만 윈도우에서는 윈도우 서비스로 파이선 스크립트를 수행하여야 한다.
약간의 수작업이 필요하며 다음과 같이 만들면 된다.

1) 윈도우 리소스 툴킷내에서 찾거나 혹은 아래의 zip 파일에서 instsrv.exe, srvany.exe 파일을 받는다.

srvany.zip

받은 파일을 특정 디렉터리에 옮긴다.
(예, C:\billeye\srvany)

2) 커맨드 창을 띄워 아래와 같은 명령을 수행한다.

C:\billeye\srvany\instsrv.exe winsvc C:\billeye\srvany\srvany.exe

위에서 winsvc는 서비스 이름으로 적당한 이름으로 대치한다.

그러면 제어판>관리도구>서비스 를 띄워 다음과 같이 winsvc가 자동으로 돌고 있음을 볼 수 있다.

그 안의 내용을 보면 아무것도 없고 그냥 놔둔다.

자동으로 기동되고 있음을 확인한다.

3) batch 파일 준비
C:\billeye\billeye\test\winsvc 폴더에 서비스로 돌릴 winsvc.py 파일이 있다면,
같은 폴더내에 winsvc.bat 파일을 만들어 다음의 내용을 넣어준다.

C:\Python26\python.exe C:\billeye\billeye\test\winsvc\winsvc.py

4) Registry 수정
regedit 명령을 수행하여 레지스터리 편집기를 띄운다.

위와 같이 "내 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winsvc" 아래에
Parameters 라는 키를 생성하고,
그 아래에 위의 오른편과 같이
AppDir 이라는 문자열 값을 만들고 그 내용은 배치파일 혹은 프로그램 실행 디렉터리를 지정하고,
Application 이라는 문자열 값을 만들고 그 내용은 배치파일 패스를 지정한다.

이렇게 하고 서비스를 start시키거나 시스템을 다시 stop & start 시키면 위의 서비스가
정상적으로 기동되는 것을 알 수 있다.

참고로 위에서 서비스를 stop해도 해당 프로세스는 동작을 멈추지 않아
작업관리자의 프로세스 탭에서 pythonw.exe 를 종료시켜야 정지할 수 있었다.
(다른 방법을 아시는 분께서는 알려주십시오)

핑백

덧글

댓글 입력 영역

구글애드텍스트