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
|