Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 磁碟空間清理實戰指南:find 尋找大檔/空檔/舊檔、rpm 套件管理、inode 監控、du 目錄分析完整工具箱

編輯:關於 Linux

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

磁碟清理工具箱

find 多維度尋檔清理

目標指令說明
大於 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/deb 套件清理

# 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 耗盡診斷 (空間尚餘但無法建檔)

# 查看 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 目錄佔用分析

# 目錄總大小
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

自動化監控腳本範例 (/usr/local/bin/disk-monitor.sh)

#!/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 100M
  • 資料分級:熱資料 (SSD)、溫資料 (HDD)、冷資料 (對象儲存/磁帶)
  • 容器映像清理:docker system prune -a --volumes 定期執行
  • 快照/備份保留策略:每日保留 7 天、每週 4 週、每月 12 月

建立「監控 → 告警 → 定位 → 清理 → 預防」閉環,才能從根本避免磁碟空間危機。

Copyright © Windows教程網 All Rights Reserved