cron 如何每 5、10、15 或 30 分钟运行一次?

cron 按固定间隔分钟运行的写法:分钟字段用步长 */5、*/10、*/15、*/30;附步长与逗号列表的区别、五字段速查表与 FAQ。

最佳实践
cron 如何每 5、10、15 或 30 分钟运行一次?封面

用"步长"语法:分钟字段写 */N。例如每 5 分钟一次:

*/5 * * * * /path/to/command

各间隔写法对照

需求 crontab 行
每 5 分钟 */5 * * * * cmd
每 10 分钟 */10 * * * * cmd
每 15 分钟 */15 * * * * cmd
每 30 分钟 */30 * * * * cmd
每小时整 0 * * * * cmd(注意不是 * * * * *

语法原理

五个时间字段:

.---------------- 分钟 (0-59)
|  .------------- 小时 (0-23)
|  |  .---------- 日 (1-31)
|  |  |  .------- 月 (1-12)
|  |  |  |  .---- 星期 (0-6,0=周日)
*  *  *  *  *  要执行的命令
  • *:任意值,每分钟/每小时都匹配。
  • */N:从 0 开始、每隔 N 匹配一次——*/5 命中 0、5、10、15……55 分。
  • 也可以用枚举达到同样效果:0,5,10,15,20,25,30,35,40,45,50,55 * * * *,但 */5 简洁得多。

常见变体

  • 只在工作时间每 10 分钟*/10 9-18 * * 1-5(周一到周五 9-18 点)。
  • 每小时的第 7 分开始每 10 分钟7-59/10 * * * *(7、17、27、37、47、57 分)。
  • 注意间隔漂移*/5 是"对齐整点"的(0、5、10……),不是从任务启动时刻算起。

观测云对照

高频巡检任务(每 5 分钟一次)最怕的是"默默停掉"——不报错,只是不再执行。把任务的标准输出/退出码落到日志并用 DataKit 采集,在观测云配一条监控器:任意 10 分钟窗口内没有该任务的成功记录就触发告警,等于给 cron 加了心跳。若任务本身慢到超过间隔导致重叠,参考 flock 防重入的写法。

常见问题(FAQ)

Q:*/55 在分钟字段有什么区别?
A:*/5 是每 5 分钟(0、5、10……55 分都跑);单独的 5 只在每小时第 5 分钟跑一次。

Q:步长能写在别的字段吗?
A:可以。0 */2 * * * 是每 2 小时;0 0 */3 * * 是每 3 天。五个字段都支持 */Na-b/N

Q:任务执行时间超过间隔会怎样?
A:cron 不会等你,照样按点启动新进程,可能多个实例并发。用 flock -n /tmp/job.lock cmd 保证同一时刻只有一个在跑。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台