🔍

首页 › 使用教程 › 开发与效率

Cron 表达式教程:字段含义、常用写法和在线生成工具

更新于 2026-10-31 · 阅读约 3 分钟 · 用到的工具:Cron 表达式生成器、Cron 表达式解析

定时备份数据库、每天早上推送日报、每 5 分钟检查一次服务状态,这些任务在服务器上通常用 Cron 来安排。Cron 表达式只有一行,但写错一个字段,任务可能永远不执行,或者每分钟执行一次。本文讲清基本写法,并演示用 Cron 表达式生成器 和 Cron 表达式解析 生成和检查表达式。

5 个字段

标准(Linux crontab)Cron 表达式由 5 个字段组成,用空格分隔:

位置字段取值范围
1分钟0–59
2小时0–23
3日1–31
4月1–12
5星期0–6(0 表示星期日,多数实现中 7 也表示星期日)

4 个常用符号

  • *:任意值,例如小时写 * 表示每个小时;
  • ,:列举多个值,例如 1,15 表示 1 号和 15 号;
  • -:范围,例如星期写 1-5 表示周一到周五;
  • /:步长,例如分钟写 */5 表示每 5 分钟。

常用示例

表达式含义
*/5 * * * *每 5 分钟
0 * * * *每小时整点
0 0 * * *每天午夜 0 点
30 8 * * 1-5工作日早上 8:30
0 9 * * 1每周一早上 9 点
0 0 1 * *每月 1 号 0 点
0 2 * * 0每周日凌晨 2 点

用工具生成和检查

  1. 选择预设或逐项设置:打开 Cron 表达式生成器,可以直接选“每 5 分钟”“工作日 8:30”“每月 1 日”等预设,也可以分别设置分钟、小时、日、月、星期。
  2. 看说明和执行时间:页面会显示表达式的中文说明和未来 5 次执行时间,确认和预期一致。
  3. 复制使用:点击“复制”,粘贴到 crontab 或任务配置里。
  4. 检查已有表达式:拿到别人写的表达式,粘贴到 Cron 表达式解析,查看含义和接下来 5 次执行时间。
选择预设后自动生成表达式,并显示说明和未来执行时间
选择预设后自动生成表达式,并显示说明和未来执行时间
⏲️ Cron 表达式生成器
免费在线使用,文件和数据只在你的浏览器本地处理,无需注册。
打开工具 →

常见的坑

  • 字段数量不同:Linux crontab 是 5 个字段;Quartz、Spring 的 @Scheduled 等通常在最前面多一个“秒”字段(6 位,Quartz 还可以有第 7 位“年”),并用 ? 表示“不指定”。把 5 位表达式直接用在这些框架里会出错,反之亦然。
  • 日和星期同时设置:在标准 cron 中,“日”和“星期”都不是 * 时,两者是“或”的关系,例如 0 0 1 * 1 表示每月 1 号或每周一都执行,而不是“每月 1 号且恰好是周一”。
  • 时区:cron 按服务器的时区运行。服务器用 UTC 时,北京时间 8:30 要写成 UTC 的 0:30。
  • 分钟字段写成星号:想“每天 8 点执行一次”,应写 0 8 * * *;写成 * 8 * * * 会在 8 点到 8:59 之间每分钟执行一次。
  • 任务没有输出:cron 环境变量与登录终端不同,脚本里尽量使用绝对路径,并把输出重定向到日志文件,方便排查。

常见问题

Cron 表达式 */5 * * * * 是什么意思?

表示每 5 分钟执行一次,即每小时的第 0、5、10……55 分钟。

工作日早上 9 点怎么写?

写成 0 9 * * 1-5,表示周一到周五的 9:00。

Linux 的 cron 和 Java 的 Quartz 表达式一样吗?

不完全一样。Linux crontab 是 5 个字段;Quartz 和 Spring 通常在开头多一个“秒”字段,并支持 ? 等特殊字符,需要按框架的规则书写。

怎样确认表达式写对了?

把表达式粘贴到 Cron 表达式解析工具,查看中文说明和接下来 5 次执行时间是否符合预期。