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

如何实现Unix脚本每日8点至20点每隔5分钟循环执行

Unix 定时执行脚本实现方案

方案1:使用系统自带cron服务(推荐)

cron是Unix类系统默认内置的定时任务管理工具,是实现该需求的最优选择。

  • 正确的cron规则写法:
    兼容大部分新系统的写法:
    */5 8-20 * * * /absolute/path/to/your/script.sh
    
    针对老版本不支持*/步长语法的Unix系统(如旧版Solaris、HP-UX等),使用手动枚举分钟的兼容写法:
    0,5,10,15,20,25,30,35,40,45,50,55 8-20 * * * /absolute/path/to/your/script.sh
    
  • 配置步骤:
    1. 执行crontab -e进入当前用户的定时任务编辑界面
    2. 将上述规则粘贴到文件末尾,保存退出后自动生效
  • 注意事项:
    • 给脚本添加可执行权限:chmod +x /absolute/path/to/your/script.sh
    • 脚本内涉及的所有文件路径统一使用绝对路径,避免cron运行时环境变量缺失导致执行失败
    • 若需要指定运行用户,可将规则写入/etc/crontab,在字段末尾添加运行用户即可

方案2:脚本循环控制(适配无cron的精简Unix环境)

如果当前环境没有预装cron服务,可以通过常驻后台的循环脚本实现定时触发:

  1. 新建调度脚本scheduler.sh,内容如下:
#!/bin/bash
while true; do
    cur_hour=$(date +%H)
    cur_min=$(date +%M)
    # 匹配8:00-20:00区间的5整分时刻,包含20:00的末次执行
    if (( (cur_hour >= 8 && cur_hour < 20 && cur_min %5 == 0) || (cur_hour == 20 && cur_min == 0) )); then
        /absolute/path/to/your/script.sh
    fi
    # 每次循环睡眠60秒,避免时间漂移漏执行
    sleep 60
done
  1. 给调度脚本添加执行权限:chmod +x /absolute/path/to/scheduler.sh
  2. 后台启动调度脚本:nohup /absolute/path/to/scheduler.sh &
  3. 若需要开机自启,可将启动命令写入/etc/rc.local等开机执行配置文件中

常见失效原因排查

  • cron规则小时段误写为8-19,导致20:00的末次执行被漏掉
  • 脚本使用相对路径,cron执行时工作目录不匹配导致找不到文件
  • 运行任务的用户没有脚本或脚本涉及资源的访问权限
  • 老版本系统不支持*/5的步长写法,替换为手动枚举分钟的规则即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:04