Cron 是 Unix/Linux 系统的任务调度器,通过一种简洁的字符串(Cron 表达式)来描述周期性任务的执行时间。各类编程语言、框架(Spring、Quartz、Node.js 的 node-cron 等)以及云平台都广泛采用 Cron 表达式。
| 字段 | 范围 | 允许特殊字符 | 示例 |
|---|---|---|---|
| 秒(可选) | 0–59 | * , - / | 30 → 第30秒 |
| 分钟 | 0–59 | * , - / | */15 → 每15分钟 |
| 小时 | 0–23 | * , - / | 9-17 → 9点到17点 |
| 日期 | 1–31 | * , - / ? | 1,15 → 每月1日和15日 |
| 月份 | 1–12 | * , - / | 3-6 → 3月到6月 |
| 星期 | 0–6(0=周日) | * , - / ? | 1-5 → 周一到周五 |
| 字符 | 含义 | 示例 |
|---|---|---|
* | 任意值(通配符) | * 在分钟位 = 每分钟 |
, | 枚举多个值 | 1,3,5 = 1、3、5 |
- | 连续范围 | 1-5 = 1到5 |
/ | 步长间隔 | */10 = 每隔10个单位 |
? | 不指定(日/星期二选一) | Quartz 风格 |
| 表达式 | 含义 |
|---|---|
* * * * * | 每分钟执行 |
0 * * * * | 每小时整点执行 |
0 0 * * * | 每天午夜 00:00 执行 |
0 9 * * 1-5 | 工作日每天上午 9:00 执行 |
0 0 1 * * | 每月1日午夜执行 |
0 0 * * 0 | 每周日午夜执行 |
*/5 * * * * | 每5分钟执行 |
0 8-18 * * 1-5 | 工作日8点到18点每小时整点执行 |
30 9 1,15 * * | 每月1日和15日上午9:30执行 |
0 0 0 * * * | 每天0点0分0秒(6字段含秒) |
标准 Unix Cron 使用 5字段(分 时 日 月 周),不含秒。而 Quartz Scheduler、Spring @Scheduled、某些云平台使用 6字段(秒 分 时 日 月 周),在最前面增加了秒字段,精度更高。
* 或 ?(Quartz 风格)。
| 平台 | 字段数 | 秒字段 | 说明 |
|---|---|---|---|
| Unix/Linux crontab | 5 | 无 | 系统级调度,分钟为最小粒度 |
| Quartz (Java) | 6–7 | 有(第1位) | 还支持年份字段,最灵活 |
| Spring @Scheduled | 6 | 有(第1位) | 基于 Spring 任务调度 |
| AWS EventBridge | 6 | 无,但有年份 | 特殊语法,日/周用 ? 互斥 |
| GitHub Actions | 5 | 无 | 标准 POSIX Cron,最小5分钟 |