免费在线 Cron/Crontab 表达式生成器,可视化选择分/时/日/月/周,自动生成表达式并附带中文描述
摘要:免费的 Cron 表达式可视化生成器,选择时间自动生成 5 段式 Cron,同步显示人类可读描述,本地运行。
本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。
使用指南
cron 手写容易在字段数与方言上踩坑:Linux crontab 是 5 段(分 时 日 月 周),Quartz 常见 6 段(多秒)或 7 段(再加年)。本工具用可视化控件逐字段构建表达式,可切换方言,并即时给出自然语言描述与接下来几次触发时间(按当前方言、浏览器本地时区),本地生成。生成后把表达式与方言一并记入变更说明,避免后人贴错字段数。
1. 从需求到表达式
- 先选方言:Unix/Vixie 5 段(默认)、Quartz 6 段、或 Quartz+年 7 段——字段标签会跟着变。
- 想清楚需求:「每 5 分钟」「工作日 9 点」「每月 1 号凌晨 2 点 30」;在对应字段选具体值、范围、步进,或 Quartz 下的「?(忽略)」。
- 核对人话描述与「下次执行」列表,确认符合预期后再复制到 crontab 或调度平台。
2. 两个经典的语义陷阱
- Unix 5 段:日与周同时受限时是「或」不是「与」——0 0 1 * 1 表示每月 1 号或每周一。
- Quartz 6/7 段:日与周必须一侧为 ?;周字段数字是 1=周日…7=周六(与 Unix 的 0/7=周日不同)。
- 步进的起点:1-5/2 等于 1,3,5;*/5 从字段最小值起——分字段是 0,5,10…55。
3. 上线前的三个检查
确认目标平台方言与本页所选一致:5 段贴进 6 段系统会整体错位。再确认时区:下次触发预览用浏览器本地时区,服务器 crontab 往往是机器本地或容器 UTC。最后:L / W / #(月末、最近工作日、第 n 个星期几)本页未支持,会明确报错而不是静默错算——需要这些写法时请对照目标调度器文档。
4. 五个高频 cron 表达式读法陷阱
crontab 五段是「分 时 日 月 周」,但组合语义有暗坑:其一,日与周同时受限时是「或」不是「与」;其二,*/n 不是精确的每 n 分钟——*/7 会落在 0,7,…,56 然后下小时从 0 重来;其三,@reboot 在容器里语义不可靠;其四,% 在 crontab 里是换行分隔符,命令里必须转义 \%;其五,Unix 周字段 0 与 7 都是周日,和 Quartz 的 1–7 编号不要混用。
5. 从 cron 迁移到现代调度器的理由
- cron 没有错过补跑:机器重启窗口错过的任务静默消失——K8s CronJob/云调度器都有 missed job 策略。
- 没有依赖与并发控制:上一轮没跑完又开一轮,cron 不管;Airflow/Temporal 这类工具为此而生。
- 时区是经典事故:cron 默认服务器本地时区,容器里常是 UTC——夏令时切换日任务会跳变,写表达式前先确认 TZ。
6. 和 cron-parser 怎么配合
本页是「从意图生成表达式」:选好方言后可视化点选,得到对应字段数的表达式,并附带描述与下次执行预览。读懂现网表达式用 cron-parser,两边选同一方言再交叉确认。联调常见流程是先生成再解析;事故排查则反过来——从现网抄进 parser。
7. 方言切换后怎么验收
切换 Unix 5 段、Quartz 6 段或带年 7 段后,字段标签与「?」可用性会变。验收三步:人话描述是否仍是原意;下次触发列表是否落在预期窗口;复制到目标平台后字段数是否一致。L / W / # 本页未支持会明确报错。预览时区是浏览器本地,部署时钟若是 UTC 需自行换算。
8. 运维实战:五类高频任务的表达式模板
数据库备份 `0 3 * * *`(每天凌晨 3 点整,避开业务低峰前的日志高峰);日志压缩归档 `30 2 * * 0`(周日凌晨 2:30,与备份错开半小时防止 IO 叠加);证书续期检查 `0 6 1 * *`(每月 1 号早上 6 点,ACME 客户端失败还有整月余量);服务健康检查 `*/5 * * * *`(每 5 分钟,配合超时与告警阈值);跨区数据同步 `0 */6 * * *`(每 6 小时一次,错峰选 0/6/12/18 而不是整队挤在整点)。这些模板的共同点:错峰、留余量、有下游告警——表达式本身只解决「什么时候」,「跑失败了怎么办」要靠监控兜底。
9. crontab 环境的四个暗坑
- % 是特殊字符:命令里的 % 会被解释为换行,date +%F 要写成 date +\%F,这是 crontab 独有转义,脚本里不用。
- PATH 与登录环境不同:cron 跑的任务只有极简 PATH,python/npm 等命令用绝对路径或在脚本头部 source 环境。
- CRON_TZ 与系统时区:容器默认 UTC,写表达式前先 echo 出目标时区确认;多时区任务用 CRON_TZ=Asia/Shanghai 单独声明。
- @reboot 不等于开机就绪:网络与磁盘挂载可能未就绪,关键启动任务在脚本里加重试。
10. 下一次执行时间怎么推算
写完表达式最该做的验证不是「看懂」,而是「看下次触发是否落在预期时刻」。本页生成的预览即为此设计:切换方言后查看未来几次触发点,人工对拍业务预期(例如「周五收盘后」应该是 17:00 还是 17:30 取决于对账时长)。把触发列表贴进变更单或值班手册,比一句「每天跑」可靠得多——凌晨事故排查时,一张精确到分钟的触发表能省掉一半争论。想系统学表达式语义与运维实践,站内的「cron 表达式详解」「crontab 运维指南」两篇长文与本工具互为补充。
常见问题
不会。表达式随你的选择在浏览器里即时生成,本页不保存、不记录、不上传。
可切换:默认 Unix/Vixie 5 段(分 时 日 月 周);也可选 Quartz 6 段(含秒)或 7 段(再加年),字段标签会跟着变。务必与目标调度器方言一致——5 段原样贴进 6 段系统会整体错位。L / W / # 未支持,遇到会明确报错而不是静默错算。
Unix 5 段里是「或」不是「与」:0 0 1 * 1 表示每月 1 号或每周一。Quartz 方言要求日与周一侧为 ?,生成器会在你指定一侧时自动把另一侧设为 ?。还要注意周字段编号差异:Quartz 是 1=周日…7=周六,与 Unix 的 0/7=周日不同,别混用。
*/n 从字段最小值起:分字段 */5 是 0,5,10…55;*/7 会落在 0,7,…,56 然后下个小时从 0 重来,所以 */n 不等于精确每 n 分钟。范围步进如 1-5/2 等于 1,3,5。另外 crontab 里 % 是换行分隔符,命令中出现必须写成 \%,否则只有第一行会执行。
不一定。预览按当前方言、浏览器本地时区计算;服务器 crontab 往往是机器本地时区或容器 UTC——先确认目标 TZ,再核对预览是否落在预期窗口。上线前把表达式与方言一并写进变更说明,避免后人贴错字段数。
方向相反:本页从意图可视化生成表达式,附人话描述与下次执行预览;cron-parser 把现成表达式解析为可读描述。联调常见流程是先生成再解析交叉确认;事故排查反过来——把现网表达式抄进 parser 读。两边选同一方言再对。
相关工具
相关文章
在线 Cron 表达式生成器:可视化创建定时任务规则
用可视化控件生成标准五字段 Cron。覆盖日/周「或」语义、时区、PATH、周字段 0–7(7=周日)、浏览器本地时区下次触发预览,以及与解析器、crontab 运维的配合。
Linux crontab 定时任务实战:命令、日志与排查
crontab 不只是写表达式:三个必会命令、/etc/cron.d 与用户 crontab 的区别、任务没跑的五步排查法、PATH/时区/% 转义、MAILTO,以及秒级任务的正确解法。
TOTP 二次验证完全指南:原理、otpauth URI 与本地调试
理解 RFC 6238 TOTP 工作原理:算法/位数/周期、otpauth URI、倒计时窗口,以及如何用浏览器本地工具调试双因素认证。