Linux 系統管理中,快速定位磁碟空間佔用情況是基本功。df 看分區整體,du 看目錄細節,兩者配合才能精準定位「空間去哪兒了」。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-root 15G 3.2G 11G 23% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 94M 366M 21% /boot
/dev/mapper/vg-opt 11G 155M 9.8G 2% /opt
-h:人類可讀單位 (K/M/G),以 1024 為基數。-H:以 1000 為基數 (廠商標示單位)。-T:顯示檔案系統類型 (ext4, xfs, tmpfs...)。-i:顯示 inode 使用率 (關鍵!inode 滿會導致無法建檔,即使空間尚餘)。$ du -h -s /home/* | sort -h
16K /home/lost+found
26M /home/nagios
1.3G /home/testuser
-h:人類可讀單位。-s (--summarize):僅顯示總計,不遞歸列出子目錄。-d N (--max-depth=N):限制遞歸深度,如 du -h -d 1 /var 只看一級子目錄。--exclude=PATTERN:排除特定目錄(如 --exclude=*.log)。| sort -h:人類可讀單位排序,快速找出最大目錄。# 找出根分區下前 10 大目錄
du -h -d 1 / | sort -hr | head -10
# 找出 /var/log 下超過 100M 的檔案
find /var/log -type f -size +100M -exec ls -lh {} \;
# 找出已刪除但仍被進程佔用的檔案 (空間未釋放)
lsof | grep deleted
df 顯示已用,du 掃不到。用 lsof | grep deleted 找出進程重啟釋放。du 掃不到原數據。用 mount --bind / /mnt 掛載根目錄繞過掛載點檢查。du 顯示實際佔用塊數,ls -l 顯示邏輯大小,稀疏檔案兩者差異巨大。df -i 排查,清理大量小檔目錄(如郵件隊列、Session 檔、快取)。ncdu:終端機互動式磁碟分析神器,apt install ncdu。baobab (GNOME Disks)、Filelight (KDE):圖形化磁碟使用率視覺化。| 需求 | 命令 |
|---|---|
| 查看所有分區使用率 | df -hT |
| 查看 inode 使用率 | df -hi |
| 查看當前目錄各子目錄大小 | du -h --max-depth=1 |
| 找出當前目錄下最大的 5 個檔案/目錄 | du -h * | sort -hr | head -5 |
| 查看特定掛載點 inode 詳情 | df -i /mount/point |
熟練掌握 df 與 du 的組合招,讓磁碟空間不再是黑盒,隨時掌握存儲脈動。