何时用其他调度器代替 crontab
crontab 数十年来一直是 Unix 调度的标准,但如今根据用途可以选择的替代方案有很多。关键在于,调度表达式本身大多使用相同的 5 字段 cron 语法。因此无论使用哪个平台,都可以先用本工具验证表达式。
systemd 定时器是新版 Linux 的默认替代方案。与 cron 不同,它可以用 journalctl 直接查看执行日志,支持与服务单元的依赖管理,以及在系统关机期间错过的任务于开机后执行的 Persistent=true 选项。不过时间写法不是 cron 语法,而是 OnCalendar 格式,需要另外学习。
云·无服务器调度器在托管环境中很受欢迎。AWS EventBridge Scheduler、GCP Cloud Scheduler、Vercel Cron、Cloudflare Cron Triggers 等大多直接接受标准 cron 表达式,且无需自行管理服务器。但必须确认其执行基准时区通常为 UTC。
CI 流水线调度也经常使用。GitHub Actions 的 on: schedule 或 GitLab CI 的流水线调度适合周期性执行仓库相关任务(测试·部署·报告)。它们使用 cron 语法但以 UTC 为准,并且由于 runner 排队,实际执行可能比精确时刻延迟数分钟。
选择标准很简单。若是运行在单台 Linux 服务器上的任务,用 cron 或 systemd 定时器;若想无服务器地以托管方式运行,用云调度器;若是与仓库绑定的任务,用 CI 调度最为自然。无论哪一种,请先用本解读器确认调度字符串的下次执行时间,再粘贴使用。