Cron Dispatch
当脚本需要在无人值守的情况下按计划运行,且同一模式在 Windows 开发机和 Linux 服务器上都能正常工作时,使用此技能。它提供了 Windows 任务计划程序和 Linux cron 的即用式设置,同时包含日志记录和重叠防护机制,确保慢速运行不会与下一次触发叠加。
何时调用
- 用户说:“每晚运行此脚本” / “设置一个 cron 任务” / “定时运行脚本” / “Windows 任务计划程序”
- 对话中的代码涉及:应定时触发而不是手动执行的独立脚本(Python、Node、shell)。
何时不调用
- 工作属于现有的常驻服务或事件循环,而非操作系统调度器。
- 用户希望使用托管云调度器(GitHub Actions cron、云函数),而不是本地机器。
具体示例
用户输入:
立即在 Windows 上每天上午 9 点运行我的 scraper.py,并稍后提供服务器上用的 Linux cron 行。
输出:
# Windows:注册一个每天 09:00 的任务(在仓库根目录运行)
powershell -ExecutionPolicy Bypass -File assets/setup_task.ps1 `
-TaskName "scraper-daily" `
-Command "python" `
-Arguments "E:\proj\scraper.py" `
-Time "09:00"
# Linux:相同的任务,每天 09:00,带日志,无重叠
0 9 * * * cd /srv/proj && flock -n /tmp/scraper.lock python scraper.py >> /srv/proj/cron.log 2>&1
应用模式
- 选择一个计划表达式,并将其转换为任务计划程序触发器和 5 字段 cron 行。
- 始终从其项目目录运行脚本,以便相对路径能正确解析。
- 将标准输出和标准错误追加到日志文件中;切勿依赖无人监控的控制台。
- 防止重叠(Linux 上使用
flock,Windows 上使用-MultipleInstances IgnoreNew),确保长时间运行不会重复执行。 - 使用稳定的任务名称进行注册、列出和移除,以便重复设置时保持幂等性。
参考文件:assets/setup_task.ps1、assets/cron_linux.sh。
来源
根据作者在自动化项目中的生产实践提炼而来。v1.0.0。 另见:[[pipeline-orchestrator]]、[[telegram-alerter]]。
→ 使用 Trawlkit 构建完整可运行的机器人。