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

请求编写Asterisk旧目录清理Shell脚本(磁盘阈值触发)

我来帮你完善这个清理Asterisk录音文件的Shell脚本,解决磁盘空间阈值触发清理的问题,同时修复原脚本里的跨年边界漏洞:

完整的Asterisk录音自动清理脚本
#!/bin/bash

# -------------------------- 配置参数区 --------------------------
DISK_THRESHOLD="75"        # 磁盘使用率触发清理的阈值(百分比)
MONITOR_DIR="/var/spool/asterisk/monitor"  # Asterisk录音根目录
MONTHS_TO_KEEP="2"         # 保留最近N个月的录音,超过的自动删除
TARGET_DISK="/dev/xvdb1"   # 目标磁盘设备(用df -h可查看你的实际设备)
# ---------------------------------------------------------------

# 获取目标磁盘的使用率(去掉%符号,避免格式问题)
USAGE=$(df -P "$TARGET_DISK" | awk 'NR==2 {gsub("%","",$5); print $5}')

# 判断是否达到清理条件
if [ "$USAGE" -ge "$DISK_THRESHOLD" ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 磁盘使用率达到${USAGE}%,触发清理流程"
    
    # 计算需要保留的起始年月(自动处理跨年,比如1月减2个月会得到去年11月)
    RETAIN_SINCE=$(date -d "-${MONTHS_TO_KEEP} months" +"%Y/%m")
    
    # 遍历所有YYYY/MM格式的录音目录,删除早于保留起始时间的目录
    find "$MONITOR_DIR" -type d -regextype posix-extended -regex '.*/[0-9]{4}/[0-9]{2}' | while read -r old_dir; do
        # 提取目录的年月部分(如2024/03)
        dir_ym=$(basename "$(dirname "$old_dir")")/$(basename "$old_dir")
        if [[ "$dir_ym" < "$RETAIN_SINCE" ]]; then
            echo "正在删除旧录音目录: $old_dir"
            rm -rf "$old_dir"
        fi
    done
    
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 清理完成"
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 磁盘使用率${USAGE}%,未达到阈值${DISK_THRESHOLD}%,无需清理"
fi

脚本优化亮点

  • 去掉冗余临时文件:原脚本用temp.log存磁盘使用率完全没必要,直接通过管道把结果赋值给变量,更高效
  • 完美处理跨年场景:用date -d "-N months"自动计算N个月前的日期,避免了原脚本中1月减2得到负数的bug
  • 精准匹配目录:用正则表达式锁定YYYY/MM格式的录音目录,防止误删其他无关文件
  • 可视化日志:添加时间戳日志,方便后续排查清理记录
  • 参数集中配置:所有可调整的参数都放在开头,不用深入代码就能修改阈值、保留时长等

使用说明

  1. 替换脚本中的TARGET_DISK为你的实际挂载磁盘设备(执行df -h可查看)
  2. 根据业务需求调整DISK_THRESHOLD和MONTHS_TO_KEEP参数
  3. 给脚本添加执行权限:chmod +x asterisk_cleanup.sh
  4. 可以添加到crontab定时执行,比如每天凌晨2点自动检查清理:
    0 2 * * * /path/to/asterisk_cleanup.sh >> /var/log/asterisk_cleanup.log 2>&1
    

内容的提问来源于stack exchange,提问作者Dani A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:19