#!/bin/bash

# 要检查的目录
TARGET_DIR="/data/dj_multictrl_data"

# 最低剩余容量（单位 GiB）
THRESHOLD=50

# 当空间不足时，每次清理几个文件（按最旧）
DELETE_COUNT=5

# 当前剩余容量（GiB）
AVAILABLE=$(df -BG "$TARGET_DIR" | awk 'NR==2 {gsub("G","",$4); print $4}')

# 日志文件
LOG_FILE="/var/log/disk_cleanup.log"

echo "$(date '+%F %T') 当前剩余空间: ${AVAILABLE}G" >> "$LOG_FILE"

if [ "$AVAILABLE" -lt "$THRESHOLD" ]; then
    echo "$(date '+%F %T') 空间低于 ${THRESHOLD}G，开始清理..." >> "$LOG_FILE"
    
    # 找出最旧的文件并删除
    find "$TARGET_DIR" -type f -printf "%T@ %p\n" \
        | sort -n \
        | head -n "$DELETE_COUNT" \
        | awk '{print $2}' \
        | while read FILE; do
            echo "$(date '+%F %T') 删除文件: $FILE" >> "$LOG_FILE"
            rm -f "$FILE"
        done
    
    echo "$(date '+%F %T') 清理结束" >> "$LOG_FILE"
else
    echo "$(date '+%F %T') 空间充足，无需清理" >> "$LOG_FILE"
fi
