Bootstrap

《NSSM系列》使用NSSM将程序安装成Windows服务

一、简介

NSSM 是一个服务封装程序,不需要“安装” ,只需将其放在系统上的某个位置(最好是在您的路径中的某个位置)并运行它,就可以将普通 exe 程序封装成 Windows 服务,使之像 Windows 服务一样运行。同类型的工具还有微软自己的 srvany,不过 NSSM 更加简单易用,并且功能强大。它的特点如下:

  • 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)。
  • 安装简单,修改方便。
  • 可以重定向输出(并且支持Rotation)。
  • 可以自动守护封装了的服务,程序挂掉了后可以自动重启。
  • 可以自定义环境变量。

这里面的每一个功能都非常实用,使用NSSM来封装服务可以大大简化我们的开发流程了。

二、下载

下载地址:https://nssm.cc/download

三、使用说明

1. 安装服务

在官网上下载完 NSSM 到本地后是一个压缩包的形式,解压后有两个版本 win32win64 根据自己操作系统的位数进行选择,进入响应的目录后,点击鼠标右键选择 在终端中打开在此处打开 Powershell 窗口,如图:
在这里插入图片描述
打开Windows PowerShell 命令行窗口后,就可以使用 NSSM 安装服务了,具体命令如下:

nssm install <服务名称>

安装程序由多个选项卡组成,其中包含许多可配置参数。大多数都预设为 NSSM 的默认值,因此可以在不离开“应用程序”选项卡的情况下安装服务。

  • 应用选项卡在这里插入图片描述
    您要运行的应用程序(或脚本)的路径是唯一的必填字段。如果应用程序需要在特定目录中启动,您可以在“启动目录”字段中输入该目录。如果该字段留空,则默认启动目录将是包含应用程序的目录。Arguments字段可用于指定要传递给应用程序的任何命令行参数。

  • 详细信息选项卡
    在这里插入图片描述
    “详细信息”选项卡列出了有关服务的系统详细信息。

  • 登录选项卡
    在这里插入图片描述
    登录选项卡可用于管理将运行该服务的用户帐户。 nssm将自动确保您选择的帐户具有必要的作为服务登录权限。

  • 依赖关系
    在这里插入图片描述
    “依赖项”选项卡列出了在服务运行之前必须启动的所有服务或服务组。
    您可以输入服务名称或显示名称,每行一个。服务组名称前面必须带有 SC_GROUP_IDENTIFIER 前缀(+ 符号)。

  • 工艺选项卡
    在这里插入图片描述
    “进程”选项卡可用于设置 应用程序的进程优先级和 CPU 关联性。默认情况下,应用程序将以正常优先级运行,并允许在所有 CPU 上执行。如果您希望将进程限制为可用 CPU 的子集,请取消选中“所有处理器”并根据需要选择 CPU。
    当服务运行时,可以从 Windows 任务管理器更改进程优先级和关联性。

  • 关机选项卡
    在这里插入图片描述
    “关闭”选项卡列出了崩溃后清理应用程序或正常停止服务时使用的各种停止方法和超时。

  • 退出操作选项卡
    在这里插入图片描述
    退出操作选项卡可用于调整 重新启动限制和服务退出时的默认 操作。您还可以指定 应用程序自动重新启动之间的强制延迟。
    要配置特定应用程序退出代码的退出操作,您必须使用注册表。

  • 输入/输出选项卡
    在这里插入图片描述
    I/O选项卡可用于指定启用I/O 重定向时使用的输入和/或输出文件。设置 输出和错误通常足以捕获应用程序生成的日志消息。
    在注册表中配置 I/O,以更好地控制路径和访问模式。

  • 文件旋转选项卡
    在这里插入图片描述
    文件轮换选项卡可与I/O设置结合使用 ,以配置服务重新启动时输出文件的轮换。
    如果选中替换现有输出和/或错误文件复选框,则nssm将在启动服务时覆盖现有输出文件。默认设置是附加到任何现有文件。如果 选中旋转文件复选框, nssm将在设置 I/O 重定向之前重命名现有文件。使用“限制轮换” 字段可以对最近修改时间晚于指定秒数或小于指定千字节数的文件禁用文件轮换。
    默认情况下,nssm仅在服务(重新)启动时执行文件轮换。要在服务运行时启用轮换增长到指定大小限制的文件,请选中服务运行时轮换复选框。在线轮换会忽略任何配置的文件期限限制。
    危险,活动部件!在线轮换需要nssm拦截应用程序的输出并自行写入文件。复杂性的增加必然导致失败风险的增加。

  • 环境选项卡
    在这里插入图片描述
    “环境”选项卡可用于指定要传递给应用程序的以换行符分隔的环境变量列表。如果选中“替换默认环境”复选框,则指定的变量将是唯一传递给服务的变量。如果未选中(默认),将保留服务启动时创建的环境。

2. 删除服务

可以使用remove的命令删除服务,具体命令如下:

nssm remove <服务名>

通过上面的命令执行后会显示删除服务的确认窗口,如图:
在这里插入图片描述
删除服务之前会显示确认窗口
在这里插入图片描述

2.0版本开始,还可以使用以下命令进行删除,就不会弹出确认窗口:

nssm remove <服务名> confirm
3. 修改服务

可以使用edit的命令修改服务,具体命令如下:

nssm edit <服务名>

执行命令后会弹出修改服务的页面,将需要修改的内容在页面进行操作后保存即可。

4. 启动服务

可以使用start的命令启动服务,具体命令如下:

nssm start <服务名>

说明:除了通过命令的方式进行启动服务外,也可以通过操作系统的任务管理器或服务管理页面进行启动。

5. 停止服务

可以使用stop的命令停止或关闭服务,具体命令如下:

nssm stop <服务名>

说明:除了通过命令的方式进行停止服务外,也可以通过操作系统的任务管理器或服务管理页面进行停止。

6. 重启服务

可以使用restart的命令重启服务,具体命令如下:

nssm restart <服务名>

说明:除了通过命令的方式进行重启服务外,也可以通过操作系统的任务管理器或服务管理页面进行重启。

更多使用说明也可以参考官网使用说明:https://nssm.cc/usage

;