概述

NSSM(Non-Sucking Service Manager)是一款类似于 srvany 的工具。它用于将普通程序转变为 Windows 服务。NSSM 会在注册表的 HKLM\System\CurrentControlSet\Services\服务名\Parameters 键下,读取应用程序路径 Application、启动目录 AppDirectory 以及启动参数 AppParameters,并启动指定程序。NSSM 可直接替代 srvany 使用,具有更强大的功能和灵活性。

NSSM 从 2.8 版本起,每次监控的应用程序重启时都会重新读取注册表,因此无需在更改注册表后重启 NSSM。

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

本机参数和服务依赖

  • DependOnGroupDependOnService:用于配置依赖的服务组和服务。

  • ObjectName:设置服务的用户账户,若设置为空字符串,则使用本地系统账户。

  • Start:服务启动类型,如自动或手动。

  • Type:服务类型,仅支持 SERVICE_WIN32_OWN_PROCESSSERVICE_INTERACTIVE_PROCESS

NSSM百度云下载链接: https://pan.baidu.com/s/1tMM1RNUnulRwhtqZks1L2w?pwd=mumu 提取码: mumu