概述
NSSM(Non-Sucking Service Manager)是一款类似于 srvany
的工具。它用于将普通程序转变为 Windows 服务。NSSM 会在注册表的 HKLM\System\CurrentControlSet\Services\服务名\Parameters
键下,读取应用程序路径 Application
、启动目录 AppDirectory
以及启动参数 AppParameters
,并启动指定程序。NSSM 可直接替代 srvany
使用,具有更强大的功能和灵活性。
NSSM 从 2.8 版本起,每次监控的应用程序重启时都会重新读取注册表,因此无需在更改注册表后重启 NSSM。
退出时的操作选项
NSSM 支持在应用程序退出时执行不同的操作,可以根据退出码配置不同的响应。支持的选项包括:
-
Restart:默认操作,NSSM 尝试重启应用程序。
-
Ignore:不重启应用程序,Windows 服务管理器将服务视为仍在运行,适合在系统启动时运行一次的服务。
-
Exit:NSSM 退出,Windows 服务管理器将服务标记为已停止。
-
Suicide:NSSM 强制退出且不标记服务停止,可用于在较老系统上确保服务恢复操作。
注意,NSSM 默认不会在应用正常退出(退出码为 0)时执行 Suicide 操作,除非特别为退出码 0 配置了 AppExit
选项。
I/O 重定向
NSSM 支持将监控程序的 I/O 重定向至任意支持 CreateFile()
函数的目标,可用于捕获日志信息、重定向命名管道输入等。
安装和使用
NSSM 无需安装。只需将其放置在系统路径中即可运行。但需要注意,若从不同位置或运行多个 NSSM 实例,可能会引发混淆。
常用命令
安装服务 - 可以使用以下命令安装服务:
nssm install <服务名>
安装向导包含多个选项卡,其中大部分为 NSSM 默认值,通常只需在“Application”选项卡完成配置。
其他管理服务命令:
NSSM 的主要功能可以通过命令行实现。
服务安装
nssm install <服务名> <程序路径> [参数]
服务的启动目录默认为程序所在目录,可在安装后通过以下命令覆盖:
nssm set <服务名> AppDirectory <路径>
服务删除
nssm remove <服务名>
启动与停止服务
nssm start <服务名>
nssm stop <服务名>
nssm restart <服务名>
查询服务状态
nssm status <服务名>
控制服务
暂停、继续或执行日志文件轮换:
nssm pause <服务名>
nssm continue <服务名>
nssm rotate <服务名>
配置参数
NSSM 提供多种参数配置,可通过以下命令查看或设置参数:
nssm get <服务名> <参数>
nssm set <服务名> <参数> <值>
参数可以重置为默认值:
nssm reset <服务名> <参数>
环境变量
可以通过以下命令查看或设置环境变量:
nssm get <服务名> AppEnvironmentExtra
nssm set <服务名> AppEnvironmentExtra KEY=VALUE
退出码配置
设置应用程序以特定退出码退出时的操作,例如:
nssm set <服务名> AppExit 2 Exit
本机参数和服务依赖
-
DependOnGroup 和 DependOnService:用于配置依赖的服务组和服务。
-
ObjectName:设置服务的用户账户,若设置为空字符串,则使用本地系统账户。
-
Start:服务启动类型,如自动或手动。
-
Type:服务类型,仅支持
SERVICE_WIN32_OWN_PROCESS
和SERVICE_INTERACTIVE_PROCESS
。
NSSM百度云下载链接: https://pan.baidu.com/s/1tMM1RNUnulRwhtqZks1L2w?pwd=mumu 提取码: mumu