#!/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