🗣️ 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
输入 cron 表达式在输入框中粘贴或输入 5 或 6 字段 cron 表达式。
-
2
阅读说明输入时即时显示自然语言说明和接下来 5 次执行时间。
-
3
尝试快速示例点击下方快速示例即可立即加载常见模式。
❓ 常见问题
5 字段与 6 字段 cron 有什么区别?
5 字段为标准 Unix(分 时 日 月 星期),6 字段在前面增加秒字段(秒 分 时 日 月 星期),用于 Quartz、Spring 等。
与 Cron 可视化工具有何不同?
本工具专注于五种语言的自然语言说明,可视化工具更关注时间表和图示。
可以使用 @daily 等别名吗?
支持 @yearly、@annually、@monthly、@weekly、@daily、@midnight、@hourly。
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。