磁碟空間耗盡是 Linux 運維高頻事件。本文提供系統化清理工具箱:find 多維度尋檔、rpm 套件清理、df -i inode 監控、du 目錄佔用分析、touch/find -newer 時間篩選、日誌/郵件/核心傾印清理,並附自動化腳本範例。

| 目標 | 指令 | 說明 |
|---|---|---|
| 大於 10MB 檔案 | find / -type f -size +10M |
+10M = >10MB,-10M = <10MB |
| 空目錄 | find /data -type d -empty -delete |
-delete 直接刪除 (謹慎使用) |
| 空檔案 (0 bytes) | find /data -type f -size 0 -delete |
或 find ... -size 0 | xargs rm -f |
| 超過 N 天未修改 | find /data -type f -mtime +30 -delete |
+30 = 30 天前,-30 = 30 天內 |
| 特定副檔名大檔 | find /var/log -name '*.log' -size +100M |
|
| 最近 N 天建立/修改 | touch -t 202401150000 /tmp/mark && find /data -newer /tmp/mark |
時間標記法 |
# RPM 系統 (RHEL/CentOS/Fedora)
# 查看已安裝套件大小
rpm -qa --qf '%{SIZE} %{NAME}\n' | sort -rn | head -20
# 移除無用套件 (需確認相依)
rpm -e package_name --nodeps # 強制移除 (危險)
# 清理 yum 快取
yum clean all
# DEB 系統 (Debian/Ubuntu)
# 查看套件大小
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | head -20
# 移除孤兒套件
sudo apt-get autoremove --purge
# 清理 apt 快取
sudo apt-get clean
# 查看 inode 使用率
df -i /home
# Use% 100% 表示 inode 耗盡
# 找出大量小檔目錄
find /home -type f | cut -d/ -f2 | sort | uniq -c | sort -rn | head
# 或
for d in /home/*/; do echo -n "$d "; find "$d" -type f | wc -l; done | sort -k2 -rn
# 目錄總大小
du -sh /home
# 列出佔用 > 1GB 的子目錄
du -h /home | awk '$1 ~ /G/ && $1+0 > 1'
# 顯示深度 1 的目錄大小
du -h --max-depth=1 /home | sort -hr
# 找出 500MB-1GB 區間檔案
find /home -type f -size +500M -size -1G
# 核心傾印
find / -name core -type f -delete
# 使用者郵件信箱 (舊系統)
find / -name mbox -type f -delete
# Journal 日誌 (systemd)
journalctl --vacuum-size=500M
journalctl --vacuum-time=30d
# APT/YUM 快取
apt-get clean / yum clean all
# /tmp 臨時檔 (重啟自動清理,亦可手動)
find /tmp -type f -mtime +7 -delete
#!/bin/bash
THRESHOLD=85
ALERT_EMAIL="admin@example.com"
df -hP | awk 'NR>1 {gsub(/%/,"",$5); if ($5 > THRESHOLD) print $0}' THRESHOLD=$THRESHOLD | \
while read line; do
echo "Disk Alert: $line" | mail -s "$(hostname) Disk Usage > $THRESHOLD%" $ALERT_EMAIL
done
# 加入 crontab
# 0 * * * * /usr/local/bin/disk-monitor.sh
/etc/logrotate.d/ 設定 daily, rotate 30, compress, size 100Mdocker system prune -a --volumes 定期執行建立「監控 → 告警 → 定位 → 清理 → 預防」閉環,才能從根本避免磁碟空間危機。