소개
serv는 NSSM의 현대적인 크로스 플랫폼 후속작으로, 어떤 긴 실행 파일도 하나의 YAML 설정 파일로 Windows 서비스(Linux에서는 systemd, macOS에서는 launchd 유닛)로 설치할 수 있는 도구입니다. TillmanBuildsTech가 개발했으며, GUI 없이 CLI 중심으로 작동하여 NSSM에서 부족했던 현대적인 프로세스 감시 기능들을 제공합니다.
상세정보
크로스 플랫폼 설정
Windows, Linux, macOS에서 동일한 ServiceConfig YAML 파일을 사용하여 서비스를 설치하고 관리할 수 있습니다. 설정 파일은 버전 관리 시스템에 체크인하여 모든 환경에서 동일하게 사용할 수 있습니다.
현대적인 프로세스 감시
NSSM에서 부족했던 기능들을 제공합니다:
- 단계적 우아한 종료: Windows에서는 Ctrl+C → 창 닫기 → 스레드 종료 → 종료 단계로, Linux/macOS에서는 SIGTERM → SIGKILL 단계로 종료를 시도하며 각 단계별 타임아웃을 설정할 수 있습니다.
- 프로세스 트리 종료: 서비스 중지/재시작 시 전체 후손 프로세스 트리를 종료하며, PID 재사용 보호 기능을 포함합니다.
- 지수적 백오프가 있는 자동 재시작: 반복적인 실패 시 지수적 백오프로 재시작하며, 안정적인 가동 시간 후 리셋됩니다.
- stdout/stderr 캡처 및 로테이션: 크기 및 날짜 기반 로테이션과 타임스탬프가 포함된 로그 파일을 생성합니다.
- 생명주기 훅: pre-start, post-start, pre-stop, post-exit 단계에서 커맨드를 실행할 수 있습니다.
Windows 서비스 계정 관리
LocalSystem, LocalService, NetworkService, 가상 서비스 계정 또는 커스텀 도메인/로컬 사용자 계정을 지원하며, 커스텀 계정은 “서비스로 로그온” 권한을 자동으로 부여합니다.
다운로드·설치 방법
여러 패키지 관리자를 통해 설치할 수 있습니다:
- Windows (WinGet): winget install TillmanBuildsTech.Serv
- Windows (Chocolatey): choco install serv
- macOS (Homebrew): brew install serv
- Node.js (어디서든): npm install -g @tillmanbuildstech/serv
기본 사용법
명령어를 사용하여 서비스를 설치하고 관리할 수 있습니다:
- 서비스 설치: serv install –exe /path/to/myapp –name myapp
- 서비스 시작: serv start myapp
- 서비스 상태 확인: serv status myapp
- 서비스 목록: serv list
- 서비스 중지: serv stop myapp
- 서비스 제거: serv remove myapp
YAML 설정 파일을 사용한 설치도 가능합니다: serv install –config myapp.yaml
설치 후 설정 파일은 OS별 시스템 디렉토리에 저장됩니다 (Windows의 경우 C:ProgramDataservmyappconfig.yaml).
이런 경우에 유용합니다
- Windows, Linux, macOS 환경에서 실행 중인 애플리케이션을 네이티브 서비스로 관리해야 할 때
- NSSM의 기능이 부족하거나 크로스 플랫폼 지원이 필요할 때
- GUI 없이 CLI 중심으로 서비스를 배포하고 관리해야 할 때
- 프로세스 종료, 로그 관리, 생명주기 훅 등 고급 기능이 필요할 때
지원 환경·시스템 요구사항
serv는 Windows, Linux, macOS에서 지원됩니다. Node.js가 설치되어 있다면 npm을 통해 어디서든 설치할 수 있습니다.
최신 버전·업데이트
현재 버전은 0.2.0이며, GitHub 저장소의 CHANGELOG.md를 통해 최신 릴리스 정보와 업데이트 내역을 확인할 수 있습니다.
라이선스
MIT 라이선스로 배포됩니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


