开发者

Cron 表达式解析器

粘贴任意 5 字段的 cron 表达式,立即以通俗语言了解它的含义——再也不用盯着星号和斜杠去猜任务何时运行。

这个计算器对您有帮助吗?

什么是Cron 表达式解析器?

Cron是Unix/Linux定时任务、CI/CD流水线、Kubernetes CronJobs以及无数任务调度器所使用的标准调度语法。一个cron表达式将整个重复调度计划压缩进五个简洁的字段中,功能强大但也以难以一眼看懂而著称——"0 */4 * * 1-5"究竟是工作日每4小时执行一次,还是完全不同的含义? 本解析器逐字段分解cron表达式,并将其翻译为通俗易懂的自然语言描述,以便您在部署前验证调度计划是否正确,或快速理解他人编写的调度逻辑,而无需反复查阅cron语法表。

何时使用此计算器

  • 在部署计划任务或 CI/CD 流水线之前验证 cron 调度
  • 调试为什么定时任务在意外的时间运行(或未运行)
  • 审查同事编写的 Kubernetes CronJob 或 GitHub Actions 调度
  • 在系统管理或 DevOps 课程中学习 cron 语法
  • 在服务器迁移期间审核现有的 crontab 条目
  • 设计结合多个时间约束的复杂调度模式

步骤:

  1. 在输入框中粘贴或输入一个 5 字段的 cron 表达式。
  2. 查看每个字段单独拆解出来及其含义。
  3. 阅读整个调度的通俗语言翻译。
  4. 尝试预设按钮,快速获取“每小时”或“工作日上午 9 点”等常用调度。

公式

┌───────────── 分钟 (0-59) │ ┌───────────── 小时 (0-23) │ │ ┌───────────── 月中的日 (1-31) │ │ │ ┌───────────── 月份 (1-12) │ │ │ │ ┌───────────── 周中的日 (0-6,周日=0) │ │ │ │ │ * * * * *

使用场景

  • 在部署计划任务或 CI/CD 流水线之前验证 cron 调度
  • 理解同事编写的Kubernetes CronJob或无服务器定时函数
  • 调试为什么定时任务在意外的时间运行(或未运行)
  • 在系统管理员或 DevOps 课程中学习 cron 语法
  • 在服务器迁移期间审核现有的 crontab 条目

主要优势

  • 即时将晦涩的 cron 语法翻译成通俗易懂的语言
  • 逐一拆解 5 个字段,条理清晰
  • 一键预设最常用的调度模式
  • 无需注册,完全在浏览器中运行

专业提示

  • 如有疑问,先用一个非常近的未来时间进行测试,确认调度按预期触发
  • 尽可能使用区间(1-5)而不是用逗号列出每个值,以提高可读性
  • 仔细检查服务器或调度器的时区设置——这是 cron “时间错误”最常见的来源
  • 对于比简单的每日/每周调度更复杂的情况,先写出通俗语言的描述,并在部署前与你的预期进行比对

需要避免的常见错误

  • 忘记月中日和周中日之间是“或”关系,而不是“且”关系
  • 将从 0 开始计数的周中日(0=星期日)与其他系统中从 1 开始计数的惯例混淆
  • 误以为月中日字段中的 */7 表示“每 7 天”——实际上它表示第 1、8、15、22、29 天,并在每月重新开始
  • 忘记大多数 cron 实现是按服务器本地时区运行的,而不是 UTC 或用户所在时区

关键术语解释

Cron:类 Unix 操作系统中使用的基于时间的任务调度器
Crontab:用于定义一组定时任务的文件或命令
步长值(Step value):"/N" 语法,表示从字段最小值开始“每 N 个单位”
CronJob:Kubernetes中用于运行cron调度任务的原生资源

相关概念

  • 时间差计算器: 计算两个日期和时间之间的时长
  • 倒计日计算器: 计算距离特定日期的天数
  • Unix 时间戳转换器: 在 Unix 时间戳和日期之间转换
  • 时区重叠计算器: 查找不同时区之间的工作时间重叠
  • JSON 格式化工具: 格式化和验证 JSON 数据

示例

表达式 "0 9 * * 1-5" 拆解为:分钟=0,小时=9,每月的每一天,每个月,周一到周五——意味着“周一至周五的 09:00”。

解读您的结果

解析器将 5 字段的 cron 表达式拆分为单独的组件,并将每个组件翻译为通俗易懂的中文。五个字段是:分钟(0-59)、小时(0-23)、月中的日(1-31)、月份(1-12)和星期(0-6,其中 0 是星期日)。当五个字段都与当前时间匹配时,任务就会运行——这是字段之间的与(AND)逻辑。 特别注意月中日与星期之间的交互,它使用或(OR)逻辑(而非与)。安排在 15 日且星期 5 的任务将在每月 15 日和每个星期五运行——而不仅仅是落在 15 日的星期五。

常见问题

cron 表达式中的 5 个字段是什么?
依次为:分钟(0-59)、小时(0-23)、月中的日(1-31)、月份(1-12)以及周中的日(0-6,其中 0 表示星期日)。当这五个字段都与当前时间匹配时,任务就会运行。
cron 语法中的星号(*)是什么意思?
星号表示该字段“允许任意值”。例如,小时字段中的 * 表示任务可以在任何小时运行——也就是说该字段不限制调度。
*/5 是什么意思?
斜杠表示步长值。分钟字段中的 */5 意味着“每 5 分钟”——从该字段的最小值开始,每 5 个单位重复一次。
如何将任务安排为仅在工作日运行?
在周中日字段使用区间:1-5 表示周一到周五。结合具体的小时和分钟,例如 "0 9 * * 1-5" 表示每个工作日上午 9:00 运行。
cron 语法中的逗号是什么意思?
逗号用于分隔一个字段中的多个值。例如,分钟字段中的 0,15,30,45 表示任务在第 0、15、30 和 45 分钟运行。逗号是简单的或(OR)关系:任务在列出的任一值上运行。
cron 语法中的连字符(范围)是什么意思?
连字符定义一个值的范围。例如,星期字段中的 1-5 表示周一到周五(第 1 到第 5 天)。范围包含两端。您可以将范围与其他语法组合:1-5,0 表示周一到周五以及周日。
如何安排任务每 2 周运行一次?
标准 cron 不原生支持双周调度。您有两个选择:(1) 使用检查日期并仅每两周运行一次的辅助脚本,或 (2) 使用支持更复杂表达式的任务调度器,如 AWS EventBridge 或带有日历触发器的系统定时器。
cron 使用什么时区?
标准 cron 使用服务器的本地时区。如果您的服务器配置为 UTC,所有 cron 任务都将以 UTC 运行,与您的本地时区无关。请始终检查服务器的时区设置,特别是在云环境中。
cron 和 crontab 有什么区别?
Cron 是执行计划任务的守护进程(后台服务)。Crontab 是定义 cron 任务列表的配置文件(或命令)。编辑 crontab 时,您编写的是 cron 守护进程读取并执行的时间表定义。
cron 如何处理夏令时切换?
大多数 cron 实现不会自动调整夏令时。当时钟向前拨时,安排在凌晨 2:00 的任务可能会被完全跳过。当时钟向后拨时,任务可能会运行两次。为避免问题,请在切换时段之外(凌晨 2:00-3:00)安排任务,或使用基于 UTC 的调度。
能否使用 cron 实现短于一分钟的间隔?
标准 cron 的精度为分钟,无法调度频率高于每分钟一次的任务。对于短于一分钟的间隔,请使用替代方案,如 systemd 定时器、间隔更短的 Kubernetes CronJob,或应用级调度器(支持毫秒的 node-cron)。

发现更多工具

精选于全站工具库的新发现。