Cron 表达式在线生成与中文反解
支持 Linux Crontab (5段) 与 Spring / Quartz (6~7段) 定时任务表达式在线配置与人类自然语言即时翻译。
阿里云爆款云服务器 · 开发者上云特惠 99元/年起
2核2G/2核4G 高性能轻量服务器、OSS 对象存储与云数据库限时特价,专属通道直达优惠。
高频常用 Cron 预设模板 (点击快速填入)
涵盖分钟、小时、每日、每周与工作日定时调度Cron 表达式结构规范:Linux Crontab (5段) vs Quartz / Spring (6~7段)
不同运行环境的字段顺序与有效取值范围差异对照。
| 段位序号 | 字段名称 | Linux Crontab (5段) | Spring / Quartz (6~7段) | 允许的特殊字符 |
|---|---|---|---|---|
| 1 | 秒 (Seconds) | 不支持 (最小为分钟) | 0 - 59 | * , - / |
| 2 | 分钟 (Minutes) | 0 - 59 (第 1 段) | 0 - 59 | * , - / |
| 3 | 小时 (Hours) | 0 - 23 (第 2 段) | 0 - 23 | * , - / |
| 4 | 日期 (Day of Month) | 1 - 31 (第 3 段) | 1 - 31 | * , - / ? L W |
| 5 | 月份 (Month) | 1 - 12 (第 4 段) | 1 - 12 或 JAN-DEC | * , - / |
| 6 | 星期 (Day of Week) | 0 - 7 (0与7皆为周日) | 1 - 7 (1为周日) 或 SUN-SAT | * , - / ? L # |
| 7 | 年份 (Year) | 不支持 | 留空或 1970 - 2099 (选填) | * , - / |
Cron 表达式特殊字符详细含义速查
深入理解星号、问号、斜杠与减号等通配符的组合规则。
代表所在字段的任意值。例如在分钟位置表示“每一分钟”,在小时位置表示“每小时”。
仅在“日期”和“星期”两个互斥字段中使用。若其中一个字段已确定(如每月 1 号),另一个字段必须填 ? 以消除冲突。
表示数值递增。0/15 在分钟位置表示从 0 分开始每隔 15 分钟触发一次(0、15、30、45)。*/5 表示每隔 5 单位执行一次。
10-12 表示包含 10、11、12 的闭区间;1,3,5 表示在第 1、第 3、第 5 时刻分别触发。
Cron 表达式常见技术问答 (FAQ)
星号与问号差异、Linux Crontab 常用管理指令与跨时区注意事项。
Q1: 为什么在 Java Quartz 中必须在日或周填问号 (?)?
在标准历法中,“某月几号”与“星期几”在概念上是彼此独立的。如果同时在日期字段填 15,在星期字段填 MON,由于并不是每个月的 15 号都是星期一,会导致逻辑冲突。因此 Quartz 规定两个字段中必须有一个显式指定为 ?(无特定值),以避开语义冲突。而在 Linux Crontab 中无 ? 语法,默认填 *。
Q2: Linux 服务器中管理 Crontab 的核心命令有哪些?
常用命令包括:
• crontab -e:编辑当前登录用户的定时调度任务;
• crontab -l:列出当前正在运行的所有定时任务;
• crontab -r:删除当前用户的所有定时任务;
• tail -f /var/log/cron 或 grep CRON /var/log/syslog:查看任务执行实时日志。
Q3: 定时任务执行时遇到时区(Timezone)偏差该如何排查?
Cron 守护进程依据的是操作系统当前的系统时间与时区设置(可通过 timedatectl 或 date -R 检查)。如果云服务器时区被默认设为 UTC+0,而期望按北京时间(UTC+8)执行,任务会发生 8 小时的推迟。建议在 Linux 中通过 timedatectl set-timezone Asia/Shanghai 将系统时区统一校准。