← 返回工具指南
工具指南Cron定时任务Crontab开发工具工具

Cron 表达式怎么写?定时任务分钟、小时、每天、每周配置指南

Cron 表达式经常因为分钟、小时、星期字段写错导致任务多跑或不跑。这篇用常见定时任务例子讲清楚 Cron 写法和检查方法。

打开配套工具 →

定时任务看起来简单,真正上线后最怕两件事:该跑的时候没跑,不该跑的时候疯狂跑。很多事故都来自 Cron 表达式写错。

这篇用常见例子讲 Cron 表达式怎么读、怎么写、怎么检查。你可以配合 Cron 表达式生成器 预览未来运行时间。

Cron 表达式的基本结构

常见 Linux Crontab 是 5 位:

text已剪下 ✓
分 时 日 月 星期

例如:

text已剪下 ✓
0 2 * * *

表示每天 02:00 运行。

有些平台使用 6 位或 7 位,会多出秒和年份。写之前一定要看平台文档,不要把 5 位表达式直接复制到所有地方。

常见写法

每 5 分钟:

text已剪下 ✓
*/5 * * * *

每天凌晨 3 点:

text已剪下 ✓
0 3 * * *

每周一早上 9 点:

text已剪下 ✓
0 9 * * 1

每月 1 号凌晨 1 点:

text已剪下 ✓
0 1 1 * *

工作日 10 点到 18 点每小时:

text已剪下 ✓
0 10-18 * * 1-5

写完后不要靠眼睛猜,直接用 Cron 表达式生成器 看接下来几次运行时间。

星期字段容易混乱

不同系统里,星期日可能是 0,也可能是 7,有些系统两者都支持。

如果是关键任务,建议:

不要只留下 0 9 * * 1,半年后别人接手会很难判断。

时区要单独确认

很多云平台默认 UTC,国内业务通常看北京时间。0 2 * * * 到底是 UTC 2 点还是北京时间 2 点,要看运行环境。

建议:

如果任务比预期早 8 小时或晚 8 小时,大概率是时区问题,不一定是 Cron 写错。

避免任务重叠

Cron 只负责触发,不保证上一次任务已经结束。如果任务每 5 分钟跑一次,但执行要 10 分钟,就可能重叠。

解决方式:

表达式正确,不代表任务系统就安全。

上线前检查清单

  1. 确认平台使用 5 位还是 6 位 Cron。
  2. 确认时区。
  3. 预览未来 5 到 10 次运行时间。
  4. 确认任务执行耗时小于周期。
  5. 日志里记录任务开始、结束和处理数量。
  6. 关键任务加失败告警。

总结

Cron 的坑主要在字段位置、星期、时区和任务重叠。上线前把未来运行时间看清楚,比事后补日志轻松得多。

写定时任务时,可以用 Cron 表达式生成器 生成和解析表达式,再把中文说明写进任务备注里。