🚀 利用任务计划程序定时重启 nssm 服务 | Windows 服务每日定时维护实践
一、前言
在 Windows 系统中,nssm
(Non-Sucking Service Manager) 是一个非常好用的工具,可以将任意可执行程序注册为系统服务。很多运维场景下,我们会使用 nssm
注册 Node.js、Python、Jar 或其它脚本进程为服务,确保它们开机自启动并稳定运行。
但服务跑久了偶尔会内存泄漏、网络异常等,这时候就需要定时重启服务。
本文将手把手教你:
- 如何创建一个自动重启服务的脚本
- 如何使用“任务计划程序”定时执行
- 实现 每天 00:00、02:00、03:00、04:00 自动重启服务
二、准备工作
✅ 你已经完成以下准备:
- 使用
nssm
注册了某个服务,例如服务名为:yoursevicename
- 确认该服务可以手动用命令控制:
net stop yoursevicename net start yoursevicename
三、创建服务重启脚本
我们建议用 .bat
批处理文件实现服务的重启逻辑,这样逻辑清晰,复用方便。
📄 文件内容:restart_yoursevicename.bat
@echo off
echo ========================================
echo 正在重启服务:yoursevicename
echo 停止服务中...
net stop yoursevicenameecho 等待 5 秒...
timeout /t 5 /nobreak >nulecho 启动服务中...
net start yoursevicenameecho 服务重启完成。
echo ========================================
📌 注意:
timeout /t 5
是为了确保服务有足够时间完全退出- 如果你的服务退出很慢,可以延长秒数为
10
或15
将该文件保存到如 C:\scripts\restart_yoursevicename.bat
四、创建任务计划(Task Scheduler)
1️⃣ 打开任务计划程序
- 开始菜单 → 搜索
任务计划程序
→ 打开
2️⃣ 创建新任务
- 点击右侧“创建任务”(不是“基本任务”)
3️⃣ 一般信息
- 名称:
定时重启 yoursevicename 服务
- 描述:用于每天凌晨定时重启 nssm 服务
4️⃣ 触发器设置
- 点击“触发器” → 新建
- 设置时间为每天
00:00
,重复任务间隔可以设置为1 天
👉 如果你要多个时间(如 02:00、03:00、04:00),可以再添加 3 个触发器。
5️⃣ 操作设置
- 操作:启动程序
- 程序或脚本:
C:\scripts\restart_yoursevicename.bat
6️⃣ 条件 & 设置(可选)
- 条件:取消“只有在使用交流电时”
- 设置:勾选“如果任务失败,重新启动间隔”等容错选项
五、验证效果
你可以手动点击任务 → “运行” 来验证是否能正常执行脚本。也可以查看服务日志(或脚本输出)确认是否成功重启。
六、进阶方案(PowerShell 版本)
如果你喜欢用 PowerShell,也可以这样写:
📄 PowerShell 脚本 restart_yoursevicename.ps1
Write-Host "Stopping service yoursevicename..."
Stop-Service -Name "yoursevicename" -ForceStart-Sleep -Seconds 5Write-Host "Starting service yoursevicename..."
Start-Service -Name "yoursevicename"Write-Host "Service restarted successfully."
然后在任务计划中运行:
powershell -ExecutionPolicy Bypass -File "C:\scripts\restart_yoursevicename.ps1"
七、总结
通过本文方法,你可以轻松实现在 Windows 下定时重启任何 nssm
注册的服务,有效预防进程异常、内存泄漏、网络堵塞等问题,提升服务稳定性。