Cron 表达式生成器与解析器
点几下即可构建 crontab 计划,也可以粘贴已有的表达式。你会得到通俗易懂的中文解释、逐字段校验,以及你所在时区接下来 10 次运行时间。
在浏览器中运行无需注册不上传任何数据
分钟小时日月星期
可视化构建器
接下来 10 次运行
如何使用Cron 表达式生成器
- 输入一个 cron 表达式,例如
*/15 * * * *,或点击一个预设。 - 阅读中文描述,确认它符合你的预期。无效的字段会被高亮并说明原因。
- 使用可视化构建器选项卡,通过每个、每 N 个、指定或范围来设置分钟、小时、日期、月份和星期。
- 查看接下来 10 次运行时间;如果服务器时区与你不同,请选择服务器的时区。
- 把表达式复制到你的 crontab、Kubernetes CronJob、GitHub Actions
schedule或 CI 配置中。
一分钟看懂 Cron 语法
标准的 cron 表达式由五个以空格分隔的字段组成:
┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12 or JAN-DEC)
│ │ │ │ ┌───── day of week (0-7 or SUN-SAT, 0 and 7 are Sunday)
│ │ │ │ │
* * * * * command
| 符号 | 含义 | 示例 |
|---|---|---|
* | 任意值 | * * * * * 每分钟 |
, | 列表 | 0 9,17 * * * 在 09:00 和 17:00 |
- | 范围 | 0 9 * * 1-5 工作日 09:00 |
/ | 步长 | */10 * * * * 每 10 分钟 |
@daily | 宏 | 等同于 0 0 * * *;另有 @hourly、@weekly、@monthly、@yearly、@reboot |
“日期 / 星期”陷阱
当两个日期字段都受限(都不以 * 开头)时,只要任意一个匹配,cron 就会运行。因此 0 0 13 * 5 会在每月 13 日以及每个星期五运行,而不只是“13 号星期五”。本生成器遵循 Vixie cron 的这一规则,并在描述中使用“或”来提醒你。
时区与夏令时
除非另行配置,cron 使用服务器的本地时区(某些 cron 实现使用 CRON_TZ=,Kubernetes CronJob 使用 timeZone;GitHub Actions 始终使用 UTC)。请在运行预览中选择对应的时区。落在夏令时空档内的任务(例如春季拨快时钟那晚的 02:30)会在预览中被跳过,因为该本地时间根本不存在。
常用计划
*/5 * * * *:每 5 分钟0 */2 * * *:每 2 小时,在整点0 9 * * 1-5:工作日 09:000 0 1 * *:每月 1 日午夜0 3 * * 0:每周日 03:00,典型的备份时间窗口
常见问题
如何让 cron 任务每 5 分钟运行一次?
使用
*/5 * * * *。分钟字段上的步长 /5 表示从 0 开始每隔 5 分钟一次:00、05、10,依此类推。cron 支持秒吗?
标准 crontab 不支持,最小单位是一分钟。Quartz、Spring 和一些云调度器增加了秒字段(6 或 7 个字段)。本工具校验标准的 5 字段格式,并在发现 6 个字段时提示你。
星期日是 0 还是 7?
两者都是。在星期字段中,0 和 7 都表示星期日,你也可以写成
SUN 或 MON-FRI 这样的名称。为什么我的任务运行的天数比预期多?
如果你同时限制了日期和星期,只要任意一个匹配,cron 就会运行。把其中一个设为
*,就只按另一个来匹配。下次运行时间是按哪个时区显示的?
默认使用你浏览器的时区。从列表中选择服务器的时区(通常是 UTC),即可准确看到任务在服务器上何时触发。