跳到内容

🗣️ Crontab → 自然语言

将 5 或 6 字段(含秒)cron 表达式转为清晰的自然语言说明,并显示接下来 5 次执行时间。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式
🔒 隐私保障: cron 表达式不会上传。所有解析与说明均在浏览器内完成。

自然语言说明

接下来 5 次执行

    快速示例

    🔗 相关工具

    📖 常见的坑

    把 cron 表达式翻译成自然语言说明,同时支持五字段(分 时 日 月 星期)与前置「秒」的六字段形式。「能读懂表达式」与「写进 crontab 后能跑起来」是两回事——crontab 这一文件格式本身有若干与表达式无关的怪癖,被它卡住的情况反而更常见。若只想确认含义与下次执行时刻,请见 Cron 表达式解析器

    情形 会发生什么 怎么处理
    命令中的 % 会让任务失败 在 crontab 中,% 会被解释为换行。第一个 % 之前是命令,其后的内容会作为标准输入传入。也就是说写 date +%Y%m%d,实际执行的只有 date +Y 之后都变成了输入。想在日志文件名里加日期时,几乎人人都会踩一次这个坑。 请为每一个 % 加上反斜杠转义date +\%Y\%m\%d。printf 的格式串以及含百分号编码的命令同理。若转义多到难以阅读,就把逻辑抽到 shell 脚本中,crontab 里只负责调用——脚本内部的 % 就只是普通字符。
    唯独最后一行不执行 crontab 文件的最后一行必须以换行结尾。缺少换行时,某些实现会直接跳过该行。用 crontab -e 编辑时编辑器会自动补上,但crontab < file 或部署脚本写入文件时,就得自己保证。既不报错也不警告,属于极难追查的故障。 请在生成脚本末尾追加 printf "\n",或用 crontab -l 读回并核对行数。同时请注意放在 /etc/cron.d/ 下的文件格式不同:时间字段之后多出一个执行用户字段0 3 * * * root /path/to/job)。漏写用户名,cron 就会把用户名当成命令去执行而失败。
    上一次任务还没跑完,下一次就启动了 cron 完全不检查上一次执行是否结束。设成每 5 分钟一次,而处理耗时增长到 7 分钟,就会始终有两个以上实例在跑,并且随着数据增长,重叠会不断累积直至雪崩。数据库锁竞争、同一文件被重复写入、超出外部 API 限流,都以这种形式发生。它会在数据量增长的某一天突然爆发,因此很难被联想到原因。 请用 flock 加互斥锁:写成 * * * * * /usr/bin/flock -n /tmp/myjob.lock /path/to/job,在上一次仍持有锁时,-n 会让新实例立即退出(若希望等待可用 -w 秒数)。同时请把任务的执行耗时写入日志并纳入监控——一旦超过间隔的 50%,就是该重新审视设计的信号。

    含「秒」的六字段形式并非 cron 标准。Quartz、node-cron、Spring 的 @Scheduled 各自做了私有扩展,写进 Linux 的 crontab 会报语法错误。本页面两者都能解析,但实际执行方是否接受,请查阅该实现的文档@daily@reboot 这类特殊字符串则是反方向的不兼容:crontab 里有效,许多库却不认识。请始终假定「运行环境不同,同一表达式的含义也可能不同」

    📖 使用方法

    1. 1
      输入 cron 表达式
      在输入框中粘贴或输入 5 或 6 字段 cron 表达式。
    2. 2
      阅读说明
      输入时即时显示自然语言说明和接下来 5 次执行时间。
    3. 3
      尝试快速示例
      点击下方快速示例即可立即加载常见模式。

    ❓ 常见问题

    5 字段与 6 字段 cron 有什么区别?
    5 字段为标准 Unix(分 时 日 月 星期),6 字段在前面增加秒字段(秒 分 时 日 月 星期),用于 Quartz、Spring 等。
    与 Cron 可视化工具有何不同?
    本工具专注于五种语言的自然语言说明,可视化工具更关注时间表和图示。
    可以使用 @daily 等别名吗?
    支持 @yearly、@annually、@monthly、@weekly、@daily、@midnight、@hourly。
    🐛 此工具出现问题了吗?

    免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

    ※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送