Skip to content

Task Scheduler 功能介紹

Task Scheduler(工作排程器)用於在 WSL 中自動化定期任務,避免重複性的手動維護操作。它提供了一個視覺化的管理介面,讓您無需記憶複雜的命令列參數即可建立和管理排程任務。

本功能範例場景:

  • 定時備份 WSL 中的發行版
  • 執行自訂指令碼或命令

所有任務統一歸集到 Windows 工作排程程式的 \WSLDashboard\UserTasks\ 路徑下,方便集中檢視和管理。您可以在介面中即時檢視任務狀態(就緒 / 執行中 / 已停用)。

社群腳本倉庫

您可以從下面的社群倉庫下載範例腳本(備份發行版),快速上手:

https://github.com/owu/wsl-community

這是一個使用者共建的程式碼倉庫,歡迎您提交 Pull Request 來貢獻腳本或分享最佳實踐。

執行命令

命令配置

每個排程任務可以配置要執行的命令(指令碼或可執行程式),支援以下選項:

配置項說明
執行命令要執行的指令碼或可執行程式路徑,支援 .bat, .ps1, .cmd, .exe, .py 等格式。可透過「瀏覽」按鈕選擇檔案。
命令參數傳遞給命令的額外參數,可選。
管理員權限勾選後,任務將以最高權限執行,適用於需要 UAC 提高權限的操作。

任務操作

建立任務後,您可以對任務執行以下操作:

操作說明
立即執行強制觸發任務立即執行,不受排程規則限制。
啟用/停用暫停或恢復任務的自動排程。
刪除從工作排程程式中移除任務。

排程規則

Cron 運算式

任務排程採用標準的 5 欄位 Cron 運算式來定義執行規則,格式如下:

分鐘 小時 日 月 星期
欄位取值範圍說明
分鐘0 - 59每小時的第幾分鐘執行
小時0 - 23每天的第幾小時執行
1 - 31每月的第幾天執行
1 - 12每年的第幾個月執行
星期0 - 70 和 7 都表示星期日

每個欄位支援以下語法:

  • * —— 符合所有值(例如 * * * * * 表示每分鐘執行一次)
  • */N —— 每隔 N 個單位執行一次(例如 */5 * * * * 表示每 5 分鐘執行一次)
  • 單一數字 —— 符合特定值(例如 0 9 * * 1 表示每週一上午 9:00 執行)

注意:不支援逗號分隔的多個值(如 1,15)和範圍運算式(如 1-5),更多限制請參見下方的注意事項

支援的組合模式

本軟體未執行原生的 Cron 守護行程,而是將 Cron 運算式翻譯為 Windows 工作排程程式(schtasks.exe 的觸發器參數。為了準確對應,解析器中僅硬編碼支援以下 7 種組合模式,涵蓋絕大多數定時任務場景:

#模式說明適用場景
1* * * * *每分鐘執行監控類、即時偵測類任務
2*/N * * * *每 N 分鐘執行一次週期性檢查任務
3M * * * *每小時的第 M 分鐘執行(如 3 * * * *整點任務
4M H * * *每天的 H 點 M 分執行(如 0 3 * * *日常維護,如每天凌晨清理日誌
5M H * * DOW每週特定星期幾的 H 點 M 分執行(如 0 12 * * 1每週例行任務,如每週一備份資料
6M H D * *每月特定日期的 H 點 M 分執行月度任務,如每月 1 號產生報表
7M H D MON *每年特定月份和日期的 H 點 M 分執行年度任務,如指定某月執行

如果運算式不屬於以上 7 種模式,系統將視為 Unsupported cron pattern 並拒絕建立。

注意事項

由於底層基於 Windows 工作排程程式實現,本軟體的 Cron 解析器與標準 Linux Cron 存在以下差異:

1. 不支援列表(,)和範圍(-

標準 Cron 允許透過逗號定義多個離散的時間點(如 1,15,30 * * * * 表示第 1、15、30 分鐘),或透過連字號定義範圍(如 1-5 * * * * 表示第 1 到 5 分鐘)。

本軟體的限制: 每個欄位只能填寫單一數字星號(*步長(*/N,不支援逗號和連字號。

2. 不支援自由組合

標準 Cron 允許任意欄位的自由組合(如 * 3 * * * 表示每天凌晨 3 點這個小時內的每一分鐘),但本軟體僅支援上方列出的 7 種固定模式,不在此範圍內的運算式將被拒絕。

3. 步長模式的時間對齊差異

在標準 Cron 中,*/5 * * * * 嚴格對齊到時鐘的 0、5、10、15... 分鐘。本軟體將其翻譯為 Windows 的 /SC MINUTE /MO 5 參數,Windows 的處理邏輯是從任務建立或啟用那一刻起計算間隔

例如,如果您在 10:02 儲存並啟用了每 5 分鐘執行一次的任務,它將在 10:07 首次執行,接著是 10:12,而非對齊到標準時鐘的 10:05