在 Linux 系統管理中,查看目錄佔用空間與硬碟總容量是基本且關鍵的技能。最常用的兩個指令 du(Disk Usage)與 df(Disk Free)雖然都能回報檔案系統大小資訊,但它們的統計邏輯、適用場景與回傳數值往往不同。本文將系統整理這兩個指令的核心差異、常見參數與實務操作技巧,幫助管理員精準掌握磁碟使用狀況。
du -ks:以 KB 為單位顯示指定目錄總大小(僅顯示總計)du -k:以 KB 為單位遞迴顯示每個子目錄大小du -h:以人類可讀單位(K、M、G)顯示du -s:僅顯示總計,不列出子目錄du -S:不包含子目錄大小,僅統計該目錄下檔案大小快速找出最大的目錄:
du -S | sort -n
df -h:以人類可讀單位顯示所有掛載點的總量、已用、可用、使用率df -T:顯示檔案系統類型(ext4、xfs、vfat 等)df -i:顯示 inode 使用情況這是許多管理員困惑的焦點。簡單說:
一個 4MB、frag=4096、nbpi=4096 的空日誌檔案系統,其 metadata 分配如下:
若用 du -s /foo 僅得 16 區塊(僅 lost+found 目錄),加上 328 區塊 metadata,共 344 區塊,與 df 回報的 8192 - 7848 = 344 完全吻合。
若程式正開啟一大型檔案,此時以 rm 刪除該檔案:
du 立即反映空間釋放(目錄項已移除)df 仍顯示空間被佔用,直到該程式關閉檔案描述符或進程結束此時可用 lsof | grep deleted 找出佔用進程並重啟服務釋放空間。
df -h 找出使用率高的掛載點du -h --max-depth=1 定位大目錄du -h --max-depth=1 * 細分到檔案層級df 與 du 差異極大,檢查是否有大量已刪除未釋放檔案或 inode 耗盡(df -i)若系統啟用 quota,可用 quota -v 查看特定使用者的磁碟限額與使用量,適合多使用者共享環境。
理解 du 與 df 的統計視角差異,是精準掌握 Linux 磁碟狀態的關鍵。實務上請配合 lsof、fuser 等工具,快速定位空間異常根因,避免誤判導致服務中斷。