Cron 表达式
Cron 表达式是 Unix/Linux 系统中用于定义定时任务的标准语法——五个字段分别代表分、时、日、月、周,用空格分隔。从 GitHub Actions 的 schedule 触发器到 Kubernetes 的 CronJob,从 Jenkins 的定时构建到系统的 crontab,Cron 表达式是自动化运维的通用语言。但它的语法对不熟悉的人来说并不直观——`*/5 * * * *` 到底是什么时候执行?
这个工具双向解析 Cron 表达式:粘贴表达式获得人类可读的描述和接下来 5 次执行时间;或者通过可视化构建器点选生成表达式,无需记忆字段含义。内置 20+ 常用预设模板,覆盖日志轮转、数据库备份、缓存清理等典型场景。
Cron → 可读文本
最近执行时间
⏰
输入 Cron 表达式查看执行时间
可视化构建
生成表达式双击复制
*/5 * * * *
分钟
/
小时
任意
日
任意
月
任意
周
任意
格式说明
分时日月周= 表达式顺序
*每/全部*/N每 N 个N指定值N-M范围📖 Cron 表达式工具使用说明
什么是 Cron 表达式?
Cron 是 Unix/Linux 系统的定时任务调度器,其表达式由 5 个字段 组成:分 时 日 月 周,用空格分隔。每个字段可以是一个具体值、一个范围、一个步进值,或 *(任意)。Cron 表达式在 GitHub Actions(schedule 触发器)、Kubernetes CronJob、GitLab CI、Jenkins Pipeline、系统 crontab 中通用——学会了它,你可以在任何平台上配置定时任务。五个字段详解
- 分钟(0-59):任务在第几分钟执行。例如 30 表示第 30 分钟(即 X:30)。最常用。
- 小时(0-23):任务在第几小时执行。例如 9 表示早上 9 点。注意是 24 小时制。
- 日(1-31):任务在每月第几天执行。例如 1 表示每月 1 日。注意:不是所有月份都有 31 天。
- 月(1-12):任务在第几月执行。例如 1 表示一月。也可以使用 JAN-DEC 的英文缩写(部分实现)。
- 周(0-7,0 和 7 都表示周日):任务在每周第几天执行。例如 5 表示周五。也可以使用 SUN-SAT 英文缩写。
特殊符号说明
- *:匹配该字段所有可能的值。* * * * * 表示每分钟执行一次。
- */N:每隔 N 个单位执行。*/15 * * * * 表示每 15 分钟执行一次(即 0, 15, 30, 45 分)。
- A-B:范围。1-5 * * * * 表示每小时的 1~5 分钟每分钟执行一次。
- A,B,C:列举多个值。0 9,18 * * * 表示每天 9:00 和 18:00 执行。
使用方法
- 解析模式:在输入框直接输入 Cron 表达式(如 */5 * * * *),下方自动显示可读描述和接下来 5 次执行时间。
- 构建模式:使用可视化构建器,通过下拉菜单为每个字段选择模式(每X分钟/具体值/范围),无需记忆语法即可生成表达式。
- 预设模板:点击预设按钮快速填入常用定时规则——每5分钟、每小时、每天、每周、每月、工作日、周末等。
常用 Cron 表达式速查
*/5 * * * * 每 5 分钟
0 * * * * 每小时整点
0 9 * * * 每天早上 9:00
0 9 * * 1-5 每个工作日早上 9:00
0 0 1 * * 每月 1 日零点
0 0 * * 0 每周日零点
0 2 * * 0 每周日凌晨 2:00
30 3 15 * * 每月 15 日凌晨 3:30
常见误区
- 日和周同时指定:Cron 中"日"和"周"这两个字段存在互斥关系。如果你同时指定了"日"(如第 15 日)和"周"(如周五),不同系统的处理方式不同——有的取"或"(即 15 日或周五都执行),有的取"与"(必须同时满足)。避免同时使用这两个字段的具体值,将其中一个设为 *。
- Cron 没有"秒"字段:标准 Unix Cron 只有 5 个字段,不支持秒级精度。如果需要精确到秒,需要使用 Spring Cron(6 个字段,第一个是秒)或 systemd timer。你的表达式如果有 6 个字段,请去掉第一个(秒)。
- 执行时间基于系统时区:服务器的 crontab 使用服务器的本地时区。如果你在北京的服务器设置 0 9 * * *,它会在北京时间 9:00 执行。但 GitHub Actions 的 schedule 使用 UTC 时区——同样的表达式会在 UTC 9:00(即北京时间 17:00)执行。设置定时任务前务必确认运行时区!
- 夏令时(DST):在实行夏令时的地区,每年会有两次时间跳变。Cron 不会自动调整——凌晨 2:30 的任务在夏令时开始那天可能被跳过(2:00 直接跳到 3:00),在夏令时结束那天可能执行两次(1:30 出现两次)。关键任务应避开凌晨 2:00-3:00 时段。