中文

Cron 表达式

一键生成/解析 Cron,自然语言解释,未来 5 次执行时间

生成或输入 Cron 表达式,用自然语言解释含义,并列出未来 5 次执行时间。
选择预设一键填入
自然语言解释
At 40 minutes past the hour, every hour, every day
未来 5 次执行时间
  • 2026年3月4日 19:40
  • 2026年3月4日 20:40
  • 2026年3月4日 21:40
  • 2026年3月4日 22:40
  • 2026年3月4日 23:40
┌──────────── [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 点执行一次@yearly0 0 1 1 *
@annually同 @yearly@annually0 0 1 1 *
@monthly每月 1 日 0 点执行一次@monthly0 0 1 * *
@weekly每周日 0 点执行一次@weekly0 0 * * 0
@daily每天 0 点执行一次@daily0 0 * * *
@midnight同 @daily@midnight0 0 * * *
@hourly每小时整点执行一次@hourly0 * * * *
@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)以及服务器环境设置都会影响实际触发时间。建议在目标服务器环境中再次验证。