Cron 表达式生成器

可视化生成 Linux Crontab 定时任务表达式

注意:日期(Day)和星期(Week)通常可能会冲突,大多数 Crontab 实现中,如果两者都指定,则是“或”的关系。本工具建议优先设置其中一个为“*”或“?”。
注意:0 表示星期日。如果“每日”设置为 * 且指定了星期,则只会在指定星期执行。

Cron 表达式格式说明

Cron 表达式是一个字符串,由 5 个或 6 个空格分隔的字段组成,表示时间集合。

字段 允许值 允许的特殊字符
分钟 (Minute) 0-59 , - * /
小时 (Hour) 0-23 , - * /
日期 (Day of Month) 1-31 , - * / ? L W
月份 (Month) 1-12 或 JAN-DEC , - * /
星期 (Day of Week) 0-7 (0或7是周日) 或 SUN-SAT , - * / ? L #

常用 Cron 表达式示例

常见问题

Linux Crontab 也是 5 位吗?
是的,标准的 Linux Crontab 使用 5 个字段(分、时、日、月、周)。一些扩展实现(如 Quartz, Spring)才支持第 6 位(秒)或第 7 位(年)。本工具默认生成标准的 5 位格式。
星号 (*) 代表什么?
星号代表该字段的所有可能值。例如,在“小时”字段中,* 表示“每小时”。
“?” 和 “*” 有什么区别?
“*” 表示任意值,“?” 仅在“日期”和“星期”字段中使用,表示“不指定值”。当你在其中一个字段指定了具体值(如周一),为了避免冲突,另一个字段(日期)通常设为 “?”(Quartz标准),但在 Linux Crontab 中通常不区分,全用 “*” 即可。
如何设置每隔 30 分钟执行?
使用斜杠 `/` 表示步长。例如 `*/30 * * * *` 表示从第 0 分钟开始,每隔 30 分钟执行一次(即 00:00, 00:30, 01:00...)。
如何设置仅在工作日执行?
在“星期”字段使用 `1-5`(周一到周五)。完整表达式如 `0 9 * * 1-5` 表示工作日早上 9 点。
Cron 不执行是什么原因?
常见原因包括:1. 脚本没有执行权限(chmod +x);2. 环境变量问题(Cron 运行环境通常没有完整的 PATH,建议使用绝对路径);3. 服务器时区设置与你预期的不一致。
能够精确到秒吗?
标准的 Linux Crontab 最细粒度是分钟。如果需要秒级调度,通常使用 `sleep` 命令配合(例如 `sleep 30; command`)或使用支持秒级的调度器(如 Quartz, Systemd timer, Go-Cron)。
L, W, # 这些字符是什么意思?
这些是扩展字符,主要用于 Quartz 等高级调度器。L 表示最后(Last,如 31 号或周六);W 表示最近的工作日(Weekday);# 用于指定第几个星期(如 6#3 表示第三个周五)。Linux Crontab 通常不支持这些。

更多免费实用工具