🚀 利用任務計劃程序定時重啟 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
注冊的服務,有效預防進程異常、內存泄漏、網絡堵塞等問題,提升服務穩定性。