K
ken
首页文章🕐 时间转换📋 JSON 工具🖼️ Base64 图片🔑 密码生成 Cron 表达式🔤 命名转换📱 二维码生成#️⃣ 哈希计算🔡 编码转换🔍 正则表达式⚙️ 配置文件格式转化🔐 加解密⚖️ BMI 计算🎲 随机数据🗜️ 图片工具🌍 世界时钟🏛️ 罗马数字🔢 数字转中文💰 贷款计算

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 执行。

使用方法

  1. 解析模式:在输入框直接输入 Cron 表达式(如 */5 * * * *),下方自动显示可读描述和接下来 5 次执行时间。
  2. 构建模式:使用可视化构建器,通过下拉菜单为每个字段选择模式(每X分钟/具体值/范围),无需记忆语法即可生成表达式。
  3. 预设模板:点击预设按钮快速填入常用定时规则——每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 时段。