Windows服务管理
2021/4/4·19 views
一、前置说明
- 图形化入口:
Win+R输入services.msc打开系统服务管理器,但功能有限,批量/自动化操作推荐命令行; - 所有命令行操作必须管理员权限:运行窗口输入
cmd,按下Ctrl+Shift+Enter打开管理员终端; - 工具分类:
net(简易启停)、sc(系统原生完整服务管理)、NSSM(第三方工具,普通exe封装为服务)。
二、Chocolatey 快速安装NSSM
Chocolatey是Windows包管理器,执行 choco install nginx 时会自动附带安装nssm;
官网:https://chocolatey.org/install
三、NSSM(推荐,普通程序转Windows服务)
核心优势
- 支持任意exe(控制台程序、带界面程序均可);
- 图形界面可视化配置、命令行静默配置双模式;
- 自带进程守护,程序崩溃可自动重启;
- 同类工具对比:比微软srvany更简单、功能更强。
下载地址:https://nssm.cc/download
基础命令
cmd
nssm install servername # 弹出图形界面创建服务
nssm start servername # 启动服务
nssm stop servername # 停止服务
nssm restart servername # 重启服务
nssm remove servername # 删除服务
nssm edit servername # 弹出窗口修改服务配置
nssm set servername 参数名 参数值 # 命令行设置服务参数
图形界面安装Nginx示例配置项
- Path:程序exe完整路径;
- Startup directory:程序所在工作目录;
- Arguments:程序运行启动参数;
- Service name:系统内服务标识名称;
配置完成点击install service,即可在services.msc中查看。
四、net 命令(简易启停,无法操作禁用服务)
仅用于启停未禁用的服务,功能极简:
cmd
net start 服务名 # 启动服务
net stop 服务名 # 停止服务
五、sc 系统原生工具(完整管控,可修改禁用服务)
Windows自带服务控制工具,支持创建、修改启动类型、查询、删除服务,可处理禁用状态服务。
常用命令
cmd
sc config 服务名 start= demand # 手动启动
sc config 服务名 start= auto # 开机自动启动
sc config 服务名 start= disabled # 禁用服务
sc start 服务名 # 启动服务
sc stop 服务名 # 停止服务
sc query 服务名 # 查询服务运行状态
sc delete 服务名 # 删除服务
sc qc 服务名 # 查看服务详细配置
sc create 服务名 binPath=xxx.exe # 新建自定义服务
补充扩展(原文缺失实用内容)
1. 三类工具适用场景区分
- NSSM:Node、Java、Python、Nginx等普通exe脚本程序封装成后台服务,需要崩溃自动重启、日志输出;
- sc:纯脚本自动化部署、无图形界面环境、修改系统内置服务启动类型;
- net:日常快速启停系统自带服务(MySQL、Redis等)。
2. NSSM静默部署示例(无弹窗)
cmd
# 1. 创建服务
nssm install MyServer
# 2. 配置程序路径、工作目录、日志
nssm set MyServer Application "D:\app\server.exe"
nssm set MyServer AppDirectory "D:\app"
nssm set MyServer AppStdout "D:\app\logs\out.log"
# 3. 启动服务
nssm start MyServer
3. sc命令注意事项
binPath=、start= 等参数等号后必须带空格,路径含空格需双引号包裹。
示例:
cmd
sc create MyService binPath= "D:\Tools\app.exe" start= auto
4. 关键避坑点
- 非管理员执行命令会直接权限报错;
- NSSM封装程序必须填写正确Startup directory,否则程序读取配置文件失败;
net无法操作禁用服务,禁用服务只能用sc start;- 删除NSSM服务时,如需确认弹窗:
nssm remove 服务名 confirm。