Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

NSSM

说明

  • NSSM 是一个把普通程序包装成 Windows 服务的轻量工具.
  • 适合没有原生 Windows Service 支持的脚本, 命令行工具或守护程序.
  • 官方下载页: https://nssm.cc/download

适用场景

  • 把常驻命令行程序注册为系统服务.
  • 为服务设置启动命令, 工作目录和日志路径.
  • 在 Windows 上为 Python, Node.js, Go 等程序补一个稳定的服务壳层.

基本流程

1. 安装服务

nssm install MyService
  • 执行后会弹出图形界面, 让你填写可执行程序路径, 启动参数和工作目录.

2. 启动服务

nssm start MyService

3. 停止服务

nssm stop MyService

4. 删除服务

nssm remove MyService confirm

关键配置项

Application

  • 指向真正要运行的可执行文件.
  • 若目标是脚本, 通常这里填解释器路径, 参数里再写脚本路径.

Startup directory

  • 很多服务启动失败都和工作目录不正确有关.
  • 依赖相对路径, 配置文件或日志目录的程序尤其要注意.

Arguments

  • 填程序启动参数.
  • 建议先在普通终端里验证命令可独立运行, 再迁移到服务配置.

I/O 日志

  • 可把标准输出和标准错误重定向到文件.
  • 很适合排查服务无法启动或启动后秒退的问题.

使用建议

  • 先确认程序本身可以稳定前台运行, 再包装为服务.
  • 若服务启动失败, 优先检查工作目录, 环境变量和依赖文件路径.
  • 对脚本语言程序, 还要确认解释器路径和虚拟环境路径是否固定.
  • 如果服务依赖网络, 数据库或其它服务, 也要检查启动顺序和重试策略.

常见问题

服务启动后立刻退出

  • 多半是目标程序本身异常退出.
  • 先看 NSSM 配置的 stdout / stderr 日志.

服务里能运行, 手工双击却不正常

  • 通常是工作目录或环境变量不同.
  • 优先比较当前目录, PATH, 配置文件位置.

需要更新程序版本

  • 可以先停服务, 替换程序文件, 再重新启动.
  • 若可执行路径或参数结构变化较大, 建议重新检查 NSSM 配置.

相关文档