# Windows 服务管理工具 NSSM 使用简介
NSSM(Non-Sucking Service Manager)是一个轻量级的Windows服务管理工具,可以将几乎任何程序作为Windows服务运行。与Windows自带的服务管理工具相比,NSSM在稳定性、易用性和功能上都有一定的优势。下面将详细介绍NSSM的安装、使用流程,包括常见命令、配置项以及日志处理。
# 一、NSSM下载安装
# 1、地址
官方网站:https://nssm.cc/ (opens new window)
GitHub:https://github.com/kohsuke/nssm (opens new window)
# 2、安装
NSSM无需安装,下载压缩包后解压即可使用。根据Windows系统的位数选择对应版本(32位或64位)下载并解压,然后设置环境变量即可。
# 二、 使用NSSM创建服务
NSSM的核心命令是nssm install
,通过该命令可以将程序注册为Windows服务。基本命令格式如下:
nssm install <ServiceName> <PathToExecutable> [<Arguments>]
<ServiceName>
:指定服务的名称。<PathToExecutable>
:要作为服务运行的可执行文件路径。<Arguments>
:可选参数,指定要传递给可执行文件的参数。
# 示例
假设希望将myapp.exe
注册为服务,并传递-config
参数:
nssm install MyAppService "C:\Program Files\MyApp\myapp.exe" -config "C:\Program Files\MyApp\config.ini"
# 三、 启动、停止与卸载服务
# 1、启动服务
服务安装完成后,可以通过 nssm start
命令启动服务:
nssm start MyAppService
# 2、停止服务
使用 nssm stop
命令停止服务:
nssm stop MyAppService
# 3、卸载服务
使用 nssm remove
命令卸载服务,基本命令格式如下:
nssm remove <ServiceName> [confirm]
<ServiceName>
:要卸载的服务名称。[confirm]
:可选参数,如果添加此参数,NSSM 将无需再次确认即直接删除服务。
# 示例
卸载服务,且无需确认:
nssm remove MyAppService confirm
# 四、NSSM 的附加命令
NSSM 提供了一些额外的命令来管理和调试服务,以下是常用的附加命令:
# nssm edit
编辑现有服务的配置。执行后会弹出一个窗口,用户可以修改服务的设置。
nssm edit <ServiceName>
# nssm dump
显示服务的当前配置,帮助用户查看服务的所有设置。
nssm dump <ServiceName>
# nssm get
获取某一配置项的当前值,查看服务的配置。
nssm get <ServiceName> <Option>
# nssm set
设置或修改某个配置项的值。命令格式如下:
nssm set <ServiceName> <Option> <Value>
# nssm reset
重置服务的所有配置为默认值。
nssm reset <ServiceName>
# nssm restart
重启服务。
nssm restart <ServiceName>
# nssm status
显示服务的当前状态,如是否正在运行。
nssm status <ServiceName>
# nssm rotate
轮换日志文件。
nssm rotate <ServiceName>
# nssm processes
查看与服务相关的进程信息。
nssm processes <ServiceName>
# 五、设置日志输出目录
如果希望记录程序的标准输出和错误输出,可以通过 AppStdout
和 AppStderr
设置日志文件路径。例如:
nssm install MyAppService "C:\Path\To\myapp.exe"
nssm set MyAppService AppStdout "C:\Path\To\logs\stdout.log"
nssm set MyAppService AppStderr "C:\Path\To\logs\stderr.log"
也可以通过 nssm edit
命令,在弹出的编辑对话框中手工进行配置。
如果没有设置日志文件路径,默认情况下,标准输出和错误输出将会被重定向到 NUL
设备,即丢弃所有输出内容,不会保存到文件中。
# 六、常见配置项(Options)
在使用 nssm set
命令时,可以设置以下配置项:
- AppDirectory:指定服务的工作目录。
- AppStdout:设置标准输出日志文件路径。
- AppStderr:设置标准错误输出日志文件路径。
- AppExit:设置程序退出时的行为。
- AppParameters:设置传递给程序的启动参数。
- AppPath:设置可执行文件的路径。
- AppShutdown:设置服务关闭时的行为。
- AppRestart:设置崩溃时的自动重启策略。
- AppStop:设置停止服务的超时时间。
- AppEnv:设置环境变量。
- AppKill:设置终止应用程序时的行为。
- AppAllowService:允许或禁止服务的运行。
- AppVerb:设置应用程序的执行方式。
- AppNoConsole:设置程序在启动时是否显示控制台窗口。
- AppPriority:设置程序的优先级。
- AppAffinity:设置程序的处理器亲和力。
- AppTimeout:设置服务启动时的超时时间。
- AppTerminate:设置停止服务时强制终止程序的超时时间。
- AppTrigger:设置特定的触发器。
- AppWorkingDirectory:设置应用程序的工作目录。
# 七、NSSM 的优势与不足
# 优势
- 易用性:NSSM 命令简洁,易于使用。通过命令行即可快速将程序注册为 Windows 服务;
- 稳定性:NSSM 能够稳定地管理任何程序的运行,包括不具备原生服务支持的应用程序;
- 重启功能:NSSM 具有内建的重启机制,可以根据配置自动重启服务,在服务崩溃时保证服务持续运行;
- 日志管理:可以配置将服务的输出记录到日志文件中,方便调试与管理。
# 不足
- 没有图形化界面:虽然 NSSM 提供了命令行界面,但对于不熟悉命令行的用户来说,操作起来可能不够直观;
- 不支持复杂的服务依赖关系:NSSM 不提供原生的服务依赖关系管理功能,可能不适用于一些复杂的服务管理场景;
- 只能在Windows平台使用:NSSM 专为 Windows 设计,不支持 Linux 或 macOS 等其他操作系统。