You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置每40分钟执行一次的crontab定时任务?

如何配置每40分钟稳定执行的crontab任务

你遇到的问题其实是crontab分钟字段*/40的逻辑特性导致的——crontab的*/N是指在该字段的有效范围内(分钟是0-59),每隔N个单位触发一次,而不是从上次执行时间开始算间隔N分钟。所以*/40 * * * *会在0分、40分触发,接下来加40分钟是80分,超过59就取模得到20分(下一小时的20分),于是就出现了40分钟间隔后跟着20分钟间隔的循环,完全不符合你要的“每40分钟固定间隔”需求。

要实现真正的每40分钟执行一次,有两种靠谱的方案:

方案1:用固定分钟值列表(适合按时间点对齐的场景)

如果你的任务可以接受在每个小时的0分、20分、40分触发(这样每次触发的间隔都是40分钟:0→40是40分钟,40→下一小时20是40分钟,20→下一小时0也是40分钟),直接用逗号分隔的固定分钟值配置即可:

0,20,40 * * * * /path/to/your/task

这种配置完全基于crontab的原生语法,稳定可靠,不需要额外脚本。

方案2:用循环脚本实现严格间隔(适合需要从首次执行开始严格每40分钟的场景)

如果你的需求是从任务第一次启动后,不管当前时间点,之后每40分钟执行一次(比如第一次在1:15执行,下一次1:55,再下一次2:35),crontab的时间字段语法无法直接实现,这时候可以写一个简单的循环脚本:

#!/bin/bash
while true; do
    # 这里写你要执行的任务命令
    /path/to/your/task
    # 等待40分钟(2400秒)
    sleep 2400
done

然后给脚本加执行权限:

chmod +x /path/to/your/script.sh

最后在crontab里配置让脚本开机启动(或者在你想要的初始时间启动):

@reboot /path/to/your/script.sh
# 或者指定初始启动时间,比如每天凌晨1点启动脚本
0 1 * * * /path/to/your/script.sh

这种方式能保证严格的40分钟间隔,不受crontab时间字段的范围限制。

内容的提问来源于stack exchange,提问作者LlaGuiTo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:32:35