[Nssm] windows 서비스 관리하기
![]()
서비스란 ??
Windows에서 서비스란 프로그램을 백그라운드로 실행, 관리 할수있도록 도와주는 도구를 의미한다.
Linux에서는 Daemon이라는 개념도 같은 개념이라고 볼 수 있다.
nssm 이란 ??
nssm은 Non-Sucking-Service-Manager의 약자로 윈도우에서 서비스를 추가, 수정, 삭제와 같은 관리를 할때 도와주는 도구이다.
리눅스가 익숙한 사람들은 systemctlsystemd와 같은 명령어라고 생각하면 이해하기 쉬울것이다.
—
사용 개요
개발환경이나 운영환경에서 필요한서비스는 보통 리눅스에서 많이 관리한다. 나의 경우에는 회사 제품중에 윈도우 PC의 특정 디렉토리의 로그파일을 감시해서 모니터링 하는 시스템이 있었다.
개발과정에서 시뮬레이션 해보기위해 첫번째로 로그파일을 실제로 남기는것처럼 윈도우 배치파일을 이용해 텍스트파일을 주기적으로 바꿔주고, 배치파일을 서비스로 등록해보기로 하였다.
테스트 서비스파일 생성
테스트 해볼 디렉토리에 다음과 같이 만들어 주었다.

5초마다 텍스트파일을 업데이트하는 simulator.bat을 아래와 같이 만들어주었다.
@echo off
setlocal enabledelayedexpansion
:: 로그 파일 설정
set "logFile=./dummy.txt"
:: 무한 루프 시작
:loop
:: 현재 시간(초) 기준으로 로그 결정
set /a "index=(%time:~6,2% / 5) %% 3 + 1"
:: index를 이용해 로그 메시지 설정
set "logMessage=!index!번째 로그"
:: 로그 메시지를 파일에 추가
echo !logMessage! >> "%logFile%"
:: 5초 대기
timeout /t 5 /nobreak >nul
goto loop
nssm으로 윈도우 서비스 등록
-
아래 링크에서
nssm를 설치해준다.
-
nssm 환경변수 설정
C:\Program Files경로에nssm폴더를 만들고 다운로드 받은 파일을 넣어준다.
-
컴터에 사양에 맞는
nssm파일을환경변수에 등록해준다.
- 터미널을 열고 명령어를 입력해준다.
nssm install 서비스명
- 서비스로 실행시킬 파일 Path, Service name 확인후 클릭
- 서비스 정상 등록 확인
nssm 명령어 정리
추가로 nssm으로 자주 쓰일것 같은 명령어를 찾아봤다.
| 명령어 | 설명 |
|---|---|
| nssm start 서비스명 | 등록된 서비스 실행 |
| nssm stop 서비스명 | 등록된 서비스 종료 |
| nssm restart 서비스명 | 등록된 서비스 재실행 |
| nssm status 서비스명 | 등록된 서비스 상태 확인 |
| nssm edit 서비스명 | 등록된 서비스 수정 |
| nssm remove 서비스명 | 등록된 서비스 삭제 |
Leave a comment