37 lines
1.0 KiB
Bash
37 lines
1.0 KiB
Bash
|
|
#!/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
|