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 명령을 사용하여 서비스를 생성한다. 이때 ServiceType 은 automatic 을 가지며, 부팅시에 자동으로 실행한다.
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 섹션에서 각각의 경로를 지정할 수 있다.