本文目录
什么是 Cron 表达式?
Cron 表达式是一串用于定义周期性任务调度计划的字符串。它最初来自 Unix 系统,如今 cron 语法被广泛用于云端调度器(AWS EventBridge、GCP Cloud Scheduler)、CI/CD 系统(GitHub Actions、Jenkins)以及各类应用框架,用来定义任务何时自动运行。
标准的 cron 表达式由 5 个字段组成:分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)和星期(0-6)。扩展格式会在开头增加一个秒字段,或在末尾增加一个年份字段。
Cron 解析的工作原理
CheckTown 的 cron 解析器会解码表达式,并准确告诉你它将在何时触发。
- 字段解析 —— 拆解每个字段,并校验取值范围和特殊字符
- 人类可读描述 —— 将表达式转换为通俗易懂的文字(例如 0 9 * * 1 → 每周一上午 9:00)
- 下次执行时间 —— 根据表达式列出接下来 5 到 10 次计划运行的时间
免费试用 —— 无需注册
解析 Cron 表达式 →何时使用 Cron 解析器
无论是创建、阅读还是调试定时任务配置,cron 解析器都能派上用场。
- 定时任务 —— 校验数据库备份、报表生成或清理任务的 cron 表达式
- 云端调度 —— 在部署前验证 EventBridge 或 Cloud Scheduler 的 cron 规则
- 值班排班 —— 确认监控告警或维护窗口的调度时间是否正确
常见问题
cron 中的 * 表示什么?
星号(*)表示该字段的“每一个有效取值”。因此分钟字段中的 * 表示“每分钟”,小时字段中的 * 表示“每小时”,以此类推。表达式 * * * * * 表示“每天每小时的每分钟都运行”。
5 字段和 6 字段的 cron 有什么区别?
传统的 Unix cron 使用 5 个字段(分钟、小时、日、月、星期)。许多现代系统会在开头增加第 6 个字段表示秒,构成(秒、分钟、小时、日、月、星期)。AWS 和 GCP 就使用 6 字段表达式。请务必确认你的调度器所要求的格式。
能否在同一个表达式中同时使用“日”和“星期”?
在大多数 cron 实现中,同时为“日”和“星期”指定具体值会形成“或”的条件 —— 只要满足其中任意一个条件,任务就会运行。这种行为容易让人困惑,往往并非本意。如果你需要任务在某个特定日期的特定星期几运行,请使用更精确的表达式,或在任务内部加入条件判断逻辑。