NSSM 사용하기

windowsservice

Windows 에서 서비스는 프로그램을 백그라운드로 실행하고 관리한다. Linux 시스템에서의 init, systemd 와 유사한 기능을 제공한다.

Windows 는 sc 를 사용하거나, PowerShell 에서 Service 명령 사용하여 서비스를 관리하는 방법을 제공한다. 이 경우 Windows 서비스를 실행하고, 종료하기 위한 몇 가지 인터페이스를 구현해야한다.

NSSM 은 the Non-Sucking Service Manager 의 약자로 말 그대로 짜증나지 않게 서비스를 관리할 수 있도록 하는 응용프로그램이다. 앞에서 이야기한 인터페이스를 구현하지 않아도 쓸 수 있도록 한다.

설치하기

NSSM 다운로드 페이지에서 받아 적절한 경로에 압축을 푼다. c:\developments 와 같이 개발 관련 디렉토리를 하나 만들고 모아두면 좋다.

명령창 또는 PowerShell 에서 nssm 명령을 실행해야하기 때문에 환경변수 PATH 에 이 경로를 추가한다. 고급시스템설정 를 사용하거나 PowerShell 에서 다음과 같이 명령을 실행한다.

Set-ItemProperty HKCU:Environment PATH ((Get-ItemPropertyValue HKCU:Environment PATH) + "c:\developemnts\nssm\win64")

주요명령

자주 사용하는 주요 명령어를 정리한다. 더 많은 내용은 여기서 확인할 수 있다.

install 명령을 사용하여 서비스를 생성한다. 이때 ServiceTypeautomatic 을 가지며, 부팅시에 자동으로 실행한다.

nssm install <servicename>

remove 명령을 사용하여 서비스를 제거한다.

nssm remove <servicename>

edit 명령을 사용하여 서비스를 수정한다.

nssm edit <servicename>

start 명령을 사용하여 서비스를 시작한다.

nssm start <servicename>

stop 명령을 사용하여 서비스를 종료한다.

nssm start <servicename>

로깅하기

프로그램 실행에 실패하거나 오류가 발생하는 로깅 메시지를 확인한다. Windows 서비스로 실행하는 경우 콘솔창이 없기 때문에 이런 메시지를 확인할 수 없다.

NSSM 에서는 stdin, stdout, stderr 을 별도의 파일로 저장할 수 있도록 설정 옵션을 제공한다. I/O 섹션에서 각각의 경로를 지정할 수 있다.