服务的特性
- 允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。
- 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。
- 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。
NSSM是什么
NSSM是一个Windows上的服务封装程序,它可以将普通exe程序封装成服务,从而在windows下运行,。
NSSM具有以下功能:
- 支持将exe程序封装成服务
- 支持设置登录的账户选项
- 支持设置依赖服务
- 支持IO重定向与文件回转
- 可以自定义环境变量
- 守护被封装的程序,程序异常退出可以自动重启
NSSM如何使用
以win11 & 应用程序以chfs文件共享服务器为例,介绍NSSM的基础使用方法。
chfs的功能以及在windows上的使用请查看历史文章
使用GUI配置文件共享服务器
打开GUI,输入.\nssm.exe install
后回车,
GUI配置项简介
Application
Path:要启动的程序路径
Startup directory:启动目录,一般为程序所在文件夹
Arguments:程序启动的参数
Service name:服务名称(该名称为服务启动后在任务管理器->服务选项卡中显示的名称,支持中文)
Details
Display name:显示名称(该名称为系统服务(可以通过任务管理器->服务选项卡中的打开服务打开)中显示,支持中文)
Description:该服务的描述信息
Startup type:启动类型(自动,自动(延迟启动),手动,禁用)
Log on
登录选项
Local System account:本地系统账号
Allow service to interact with desktop:允许服务和桌面进行交互(显示GUI,但是不推荐使用)
This Account:指定登录的账号
Dependencies
依赖
服务启动时所依赖的其他服务或系统资源。通过设置依赖项,NSSM 在启动当前服务之前,先确保其所依赖的其他服务或资源已经启动和可用。
Process
进程优先级设定
Priority:设置服务优先级(实时、高优先级、高于正常、正常、低于正常、低)
Affinity:设置是否在所有或者指定的CPU上运行
Console window:是否创建一个新的控制台窗口(对于一些希望读取用户输入的程序来说需要)
Shutdown
停止或关闭服务时的一些操作
默认全部启用即可
Generate Control-C:生成 Control-C 事件并将其发送
Send WM_CLOSE to windows:枚举应用程序创建的所有窗口并向它们发送 WM_CLOSE 消息
Post WM_QUIT to threads:枚举应用程序创建的所有线程并向它们发送WM_QUIT消息
Terminate process:请求操作系统强制终止应用程序
Exit actions
程序退出动作
Throttling:应用运行后如果少于该时间后退出,则会在一定延时后重新启动
第一次重新启动。如果重新启动的应用程序在运行阈值毫秒数之前继续退出,则 nssm 将暂停至少 2000 毫秒,使每次后续故障的暂停时间加倍。暂停的最长时间为 256000 毫秒,大约四分钟。当服务成功运行至少阈值时间时,延迟计数器将重置。
Restart:程序退出后的逻辑(重启、无操作、停止服务、假死)和重启延迟时间
I/O
输入输出重定向
Input(stdin):输入重定向路径
Output(stdout):输出重定向路径
Error(stderr):错误重定向路径
File rotation
文件回转
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
配置自定义环境变量
Replace default environment:替换系统变量
使用GUI配置一个简单的服务
我们以前面讲过的文件共享服务器为例,来配置一个文件共享服务,对应的文件服务器使用参考以往的文章。
其余参数保持默认,点击install service
进入浏览器输入http://127.0.0.1:18080/
查看对应的日志文件显示
查看服务状态
可以观察到该服务已经成功启动。
常用的命令行参数
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>
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。