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

如何设置每两个半小时运行一次的cronjob定时任务

你之前配置的30 */2 * * *实际含义是每2小时的第30分钟执行一次,执行时间点为0:30、2:30、4:30……相邻两次执行间隔为2小时,不符合2.5小时的需求,因此无法达到预期。以下是3种可行的实现方案:

方案1:组合两条cron规则(无额外依赖,原生cron支持)

注意:因为24小时不是2.5小时的整数倍,原生cron无法实现完全无跨天偏移的固定2.5小时间隔。如果你能接受固定时间点执行、且当日相邻两次执行间隔都是2.5小时,可以用以下两条规则,直接添加到crontab即可:

30 0,5,10,15,20 * * * 你的执行命令
0 3,8,13,18 * * * 你的执行命令

执行时间点为:0:30 → 3:00 → 5:30 → 8:00 → 10:30 → 13:00 → 15:30 → 18:00 → 20:30,当日最后一次执行到次日0:30的间隔为4小时,适合对跨天间隔要求不高的场景。

方案2:脚本判断执行(支持严格无偏移的2.5小时间隔)

先创建执行判断脚本,例如run_every_150min.sh:

#!/bin/bash
# 间隔150分钟即9000秒
interval=9000
now=$(date +%s)
if [ $((now % interval)) -eq 0 ]; then
    # 替换为你实际要执行的命令路径
    /path/to/your/task
fi

给脚本添加执行权限:
chmod +x /path/to/run_every_150min.sh

再在crontab中添加一条规则,每分钟调用一次判断脚本:

* * * * * /path/to/run_every_150min.sh

这个方案的好处是可以实现严格的每150分钟执行一次,不受跨天影响,后续调整间隔也只需要修改脚本中的interval值即可。

方案3:systemd timer配置(Linux系统通用,易排查维护)

如果你的系统使用systemd,这种非整小时间隔的定时任务用timer配置可读性更高,也方便后续查询执行日志和异常排查:

  1. 先创建service文件/etc/systemd/system/your-custom-task.service:
[Unit]
Description=自定义2.5小时间隔执行任务

[Service]
Type=oneshot
# 替换为你实际要执行的命令路径
ExecStart=/path/to/your/task
  1. 再创建对应的timer文件/etc/systemd/system/your-custom-task.timer:
[Unit]
Description=每2.5小时执行一次自定义任务

[Timer]
# 系统启动5分钟后开始第一次执行
OnBootSec=5min
# 每次执行完成后间隔150分钟再执行下一次
OnUnitActiveSec=150min
Persistent=true

[Install]
WantedBy=timers.target
  1. 重载配置并启用timer:
systemctl daemon-reload
systemctl enable --now your-custom-task.timer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:45:02