Cron Dispatch
當指令碼必須在無人看管的情況下按時執行,且同一個模式必須同時適用於 Windows 開發機和 Linux 伺服器時,請使用此技能。它提供 Windows 工作排程器和 Linux cron 的複製貼上設定,加上記錄檔和重疊防護機制,確保執行緩慢的工作不會疊加到下一次觸發上。
何時呼叫
- 使用者說:「每晚執行這個」/「設定 cron 工作」/「排程指令碼」/「Windows 工作排程器」
- 對話中的程式碼使用:應定時執行而非手動觸發的獨立指令碼(Python、Node、Shell)。
何時不應呼叫
- 工作應屬於現有的常駐服務或事件迴圈,而非作業系統排程器。
- 使用者想要的是受管雲端排程器(GitHub Actions cron、雲端函數),而不是本機機器。
具體範例
使用者輸入:
Run my scraper.py every day at 9am on Windows now, and give me the Linux cron line for the server later.
輸出:
# Windows: register a daily 09:00 task (run from the repo root)
powershell -ExecutionPolicy Bypass -File assets/setup_task.ps1 `
-TaskName "scraper-daily" `
-Command "python" `
-Arguments "E:\proj\scraper.py" `
-Time "09:00"
# Linux: same job, 09:00 daily, logged, no overlap
0 9 * * * cd /srv/proj && flock -n /tmp/scraper.lock python scraper.py >> /srv/proj/cron.log 2>&1
要套用的模式
- 選擇一個排程表達式,並將其同時轉換為工作排程器觸發條件和五欄位 cron 行。
- 務必從其專案目錄執行指令碼,以便相對路徑能正確解析。
- 將標準輸出和標準錯誤輸出附加到記錄檔;切勿依賴無人觀看的終端機。
- 防止重疊執行(Linux 用
flock,Windows 用-MultipleInstances IgnoreNew),這樣長時間執行的工作就不會重複堆疊。 - 使用穩定的工作名稱來註冊、列出和移除,以便重新執行設定時保持冪等性。
參考檔案:assets/setup_task.ps1、assets/cron_linux.sh。
來源
根據作者自動化專案中的實際使用經驗提煉而成。v1.0.0。 另請參閱:[[pipeline-orchestrator]]、[[telegram-alerter]]。
→ 搭配 Trawlkit 建置完整的可執行機器人。