如何利用NSSM创建Windows服务

服务的特性

  • 允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。
  • 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。
  • 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。

NSSM是什么

NSSM是一个Windows上的服务封装程序,它可以将普通exe程序封装成服务,从而在windows下运行,。
NSSM具有以下功能:

  • 支持将exe程序封装成服务
  • 支持设置登录的账户选项
  • 支持设置依赖服务
  • 支持IO重定向与文件回转
  • 可以自定义环境变量
  • 守护被封装的程序,程序异常退出可以自动重启

NSSM如何使用

以win11 & 应用程序以chfs文件共享服务器为例,介绍NSSM的基础使用方法。

chfs的功能以及在windows上的使用请查看历史文章

使用GUI配置文件共享服务器

打开GUI,输入.\nssm.exe install后回车,
image.png
image.png
image.png

GUI配置项简介
Application

image.png
Path:要启动的程序路径
Startup directory:启动目录,一般为程序所在文件夹
Arguments:程序启动的参数
Service name:服务名称(该名称为服务启动后在任务管理器->服务选项卡中显示的名称,支持中文)

Details

image.png
Display name:显示名称(该名称为系统服务(可以通过任务管理器->服务选项卡中的打开服务打开)中显示,支持中文)
Description:该服务的描述信息
Startup type:启动类型(自动,自动(延迟启动),手动,禁用)

Log on

登录选项
image.png
Local System account:本地系统账号
Allow service to interact with desktop:允许服务和桌面进行交互(显示GUI,但是不推荐使用)
This Account:指定登录的账号

Dependencies

依赖
服务启动时所依赖的其他服务或系统资源。通过设置依赖项,NSSM 在启动当前服务之前,先确保其所依赖的其他服务或资源已经启动和可用。
image.png

Process

进程优先级设定
image.png
Priority:设置服务优先级(实时、高优先级、高于正常、正常、低于正常、低)
Affinity:设置是否在所有或者指定的CPU上运行
Console window:是否创建一个新的控制台窗口(对于一些希望读取用户输入的程序来说需要)

Shutdown

停止或关闭服务时的一些操作

默认全部启用即可

image.png
Generate Control-C:生成 Control-C 事件并将其发送
Send WM_CLOSE to windows:枚举应用程序创建的所有窗口并向它们发送 WM_CLOSE 消息
Post WM_QUIT to threads:枚举应用程序创建的所有线程并向它们发送WM_QUIT消息
Terminate process:请求操作系统强制终止应用程序

Exit actions

程序退出动作
image.png
Throttling:应用运行后如果少于该时间后退出,则会在一定延时后重新启动

第一次重新启动。如果重新启动的应用程序在运行阈值毫秒数之前继续退出,则 nssm 将暂停至少 2000 毫秒,使每次后续故障的暂停时间加倍。暂停的最长时间为 256000 毫秒,大约四分钟。当服务成功运行至少阈值时间时,延迟计数器将重置。

Restart:程序退出后的逻辑(重启、无操作、停止服务、假死)和重启延迟时间

I/O

输入输出重定向
image.png
Input(stdin):输入重定向路径
Output(stdout):输出重定向路径
Error(stderr):错误重定向路径

File rotation

文件回转
image.png
Replace existing Output and/or Error:应用在启动时会替代已经存在的输出文件以及错误文件
Rotate files:文件回转
Rotate while service is running:当服务运行过程中也会进行文件回转(正常是在服务启动时会进行文件回转)
Restrict rotation to files older than 0 seconds:根据时间进行回转
Restrict rotation to files bigger than 0 bytes:根据大小进行回转

Environment

配置自定义环境变量
image.png
Replace default environment:替换系统变量

使用GUI配置一个简单的服务

我们以前面讲过的文件共享服务器为例,来配置一个文件共享服务,对应的文件服务器使用参考以往的文章。
image.png
image.png
image.png
其余参数保持默认,点击install service
image.png
image.png
image.png
image.png
进入浏览器输入http://127.0.0.1:18080/
image.png
查看对应的日志文件显示
image.png
查看服务状态
image.png
image.png
可以观察到该服务已经成功启动。

常用的命令行参数

Usage: nssm <option> [<args> ...]

To show service installation GUI:

        nssm install [<servicename>]

To install a service without confirmation:

        nssm install <servicename> <app> [<args> ...]

To show service editing GUI:

        nssm edit <servicename>

To retrieve or edit service parameters directly:

        nssm get <servicename> <parameter> [<subparameter>]

        nssm set <servicename> <parameter> [<subparameter>] <value>

        nssm reset <servicename> <parameter> [<subparameter>]

To show service removal GUI:

        nssm remove [<servicename>]

To remove a service without confirmation:

        nssm remove <servicename> confirm

To manage a service:

        nssm start <servicename>

        nssm stop <servicename>

        nssm restart <servicename>

        nssm status <servicename>

        nssm rotate <servicename>

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 nssm(Non-Sucking Service Manager)来安装和管理 Nginx 服务。以下是安装 Nginx 服务的步骤: 1. 首先,你需要下载并解压 Nginx 的压缩包。你可以从 Nginx 官方网站(https://nginx.org/)下载最新版本的稳定版。 2. 在解压的 Nginx 文件夹中,创建一个名为 `nginx.conf` 的配置文件。你可以根据需要对该文件进行配置。 3. 打开命令提示符或 PowerShell,并导航到 Nginx 文件夹的路径。 4. 使用以下命令来安装 Nginx 服务: ``` nssm install nginx ``` 这将打开 NSSM 的 GUI 界面。 5. 在 NSSM 的 GUI 界面中,首先指定 `Path` 为 Nginx 可执行文件的完整路径(例如:`C:\path\to\nginx.exe`)。 6. 在 `Startup directory` 中,指定 Nginx 的工作目录,这是包含 `nginx.conf` 文件的目录。 7. 在 `Arguments` 中,输入以下参数: ``` -c "路径\到\nginx.conf" ``` 请确保将 `路径\到\nginx.conf` 替换为你实际的 `nginx.conf` 文件的路径。 8. 在 `Dependencies` 选项卡中,选择与 Nginx 相关联的依赖项(如果有)。 9. 在 `Details` 选项卡中,输入一个描述性的名称(例如:Nginx Service),然后单击 `Install service` 按钮。 10. 完成后,你可以在 Windows 服务列表中找到并管理 Nginx 服务。你可以使用以下命令启动、停止或重启服务: ``` nssm start nginx nssm stop nginx nssm restart nginx ``` 这样,你就可以使用 nssmWindows 上安装和管理 Nginx 服务了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值