Cron 表达式
一键生成/解析 Cron,自然语言解释,未来 5 次执行时间
生成或输入 Cron 表达式,用自然语言解释含义,并列出未来 5 次执行时间。
自然语言解释
At 40 minutes past the hour, every hour, every day
┌──────────── [optional] seconds (0 - 59) | ┌────────── minute (0 - 59) | | ┌──────── hour (0 - 23) | | | ┌────── day of month (1 - 31) | | | | ┌──── month (1 - 12) OR jan,feb,mar,apr ... | | | | | ┌── day of week (0 - 6, sunday=0) OR sun,mon ... | | | | | | * * * * * * command
| 符号 | 含义 | 示例 | 等效 |
|---|---|---|---|
| * | 任意值 | * * * * | 每分钟 |
| - | 范围 | 1-10 * * * | 第 1 到第 10 分钟 |
| , | 列表 | 1,10 * * * | 第 1 和第 10 分钟 |
| / | 步进 | */10 * * * | 每 10 分钟 |
| @yearly | 每年 1 月 1 日 0 点执行一次 | @yearly | 0 0 1 1 * |
| @annually | 同 @yearly | @annually | 0 0 1 1 * |
| @monthly | 每月 1 日 0 点执行一次 | @monthly | 0 0 1 * * |
| @weekly | 每周日 0 点执行一次 | @weekly | 0 0 * * 0 |
| @daily | 每天 0 点执行一次 | @daily | 0 0 * * * |
| @midnight | 同 @daily | @midnight | 0 0 * * * |
| @hourly | 每小时整点执行一次 | @hourly | 0 * * * * |
| @reboot | 系统启动时执行 |
| 位置 | 字段 | 允许值 | 特殊符号 |
|---|---|---|---|
| 1 | 分钟 | 0 - 59 | , - * / |
| 2 | 小时 | 0 - 23 | , - * / |
| 3 | 日期 | 1 - 31 | , - * / ? L W |
| 4 | 月份 | 1 - 12 | , - * / |
| 5 | 星期 | 0 - 6 (Sun-Sat) | , - * / ? L # |
* (所有值):每一分钟/小时/日等都会运行。例如 * * * * * 表示每分钟。
/ (步进):*/15 表示每隔 15 个单位。例如 */15 * * * * 为每 15 分钟;0 */2 * * * 为每 2 小时。
L (Last):仅部分 Cron 实现支持,表示「最后」——如日期位 L 表示月末,星期位 L 表示周六。标准 crontab 可能不支持。
什么是 Cron 表达式?
Cron 是 Linux crontab 与各类任务调度器常用的定时规则格式,用来按周期执行命令或脚本。使用本工具可生成/解析 Cron,获得中文自然语言解释,并预览未来执行时间。
本工具能做什么
- 将 Cron 表达式解释为自然语言(支持中文)。
- 预览未来 5 次执行时间,快速校验是否符合预期。
- 提供常用场景预设,一键填入常见任务。
- 提供语法速查表与特殊符号说明,降低学习成本。
常见使用场景
- 每日备份 / 清理日志
- 定时请求接口 / 健康检查
- 定时重启服务 / 刷新缓存
- 月度报表与月末任务
常见问题
Crontab 使用什么时区?
Crontab 使用服务器系统时间(多为 UTC),与本地电脑时间可能不同。部署前请确认服务器时区,必要时可在任务前指定 TZ=Asia/Shanghai 等。
为什么脚本在终端能跑、在 Cron 里找不到命令?
Cron 执行时的 PATH 和当前目录通常与登录终端不同。请使用绝对路径(如 /usr/bin/python3),或在脚本开头 export PATH=/usr/local/bin:/usr/bin:$PATH。
如何查看 Cron 任务是否执行?
建议将标准输出/错误重定向到日志文件,便于确认是否执行与排查失败原因。
* * * * * /path/to/script.sh >> /var/log/cron.log 2>&1
为什么有的例子是 5 段,有的是 6 段?
标准 crontab 通常是 5 段(分 时 日 月 周)。部分调度器支持增加“秒”字段,变为 6 段。
@daily / @hourly 这类快捷写法都支持吗?
不一定。部分 Cron 实现支持这些特殊字符串,但也有实现只接受数字字段格式。
为什么预览的执行时间与我想的不一样?
时区、夏令时(DST)以及服务器环境设置都会影响实际触发时间。建议在目标服务器环境中再次验证。