windows守护进程工具nssm

nssm简介

nssm是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。

它的特点如下:

支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
安装简单,修改方便
可以自动守护封装了的服务,程序挂掉了后可以自动重启
官网地址:https://nssm.cc/

nssm配置详解

下载地址

官网地址:https://nssm.cc/download

解压压缩包,根据系统位数选择64或32位程序

打开命令行,运行nssm程序

管理员权限打开命令行工具,切换到nssm.exe所在路径,运行 nssm install,打开程序配置界面

配置项说明:
Path:运行应用程序的程序
Startup directory:应用程序所在的目录
Arguments:应用运行的参数
Service name:生成服务的名称
最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。

常用命令

nssm install servername //创建servername服务,弹出配置界面
nssm start servername //启动服务
nssm stop servername //暂停服务
nssm restart servername //重新启动服务
nssm remove servername //删除创建的servername服务
nssm edit servername//更改servername服务,弹出修改界面
nssm set servername 参数名 参数值 //设置服务参数值
sc delete servername//windows删除服务命令
直接使用windows的服务管理也可以实现服务的操作,服务右键属性 - 恢复即可设置服务挂掉重启等内容。

实战:将应用做成服务

程序说明

这里演示将net6的web项目制作成windows服务
应用的启动命令是:

1
dotnet WebApplication_nssm.dll --urls=http://*:8888/ --port=8888

安装服务

1
nssm install
1
2
3
4
Path:C:\Program Files\dotnet\dotnet.exe
Startup directory:D:\TechLearn
Path:C:\Program Files\dotnet\dotnet.exe
Startup directory:D:\TechLearn\001、Tools--nssm\WebApplication_nssm\bin\Debug\net6.0
Arguments:WebApplication_nssm.dll --urls=http://*:8888/ --port=8888
Service name:webapp8888
01、Tools--nssm\WebApplication_nssm\bin\Debug\net6.0 Arguments:WebApplication_nssm.dll --urls=http://*:8888/ --port=8888 Service name:webapp8888

最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。

管理服务

启动服务

1
2
D:\nssm-2.24\win64>nssm start webapp8888
webapp8888: START: 操作成功完成。

关闭服务

1
2
D:\nssm-2.24\win64>nssm stop webapp8888
webapp8888: STOP: 操作成功完成。

重启服务

如果服务未启动就会直接启动,启动的会重启。

1
2
3
4
5
6
7
D:\nssm-2.24\win64>nssm restart webapp8888
webapp8888: STOP: 服务尚未启动。
webapp8888: START: 操作成功完成。

D:\nssm-2.24\win64>nssm restart webapp8888
webapp8888: STOP: 操作成功完成。
webapp8888: START: 操作成功完成。

修改服务

输入命令,修改配置,不能修改服务名

1
D:\nssm-2.24\win64>nssm edit webapp8888

删除服务

删除有二次确认,删除之后服务就找不到了,需要重新安装

1
2
D:\nssm-2.24\win64>nssm remove webapp8888
Service "webapp8888" removed successfully!

https://blog.csdn.net/liyou123456789/article/details/123094277