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 df 與 du 指令顯示磁碟空間不一致?找回被佔用的「隱形空間」

編輯:關於 Linux

管理 Linux 伺服器時,常發現 df 與 du 顯示的已用空間差異極大。du 統計的目錄總和明顯小於 df 回報的已用空間,這是否意味著空間被隱藏?本文解析成因並提供解決方案。

現象重現

  • df 顯示根分區已用 5,456,700 KB(約 5.20 GB)。
  • du 統計根目錄下各目錄大小(排除掛載點),總和僅 3,075,332 KB(約 2.93 GB),相差 2.27 GB。

核心原因

此現象通常因已刪除但仍被進程持有開啟的檔案導致。檔案雖從目錄移除,但只要進程未結束,其佔用的磁碟區塊不會釋放,類似 Windows 的「資源回收筒」機制。

解決步驟

  1. 找出「幽靈檔案」
    使用 lsof 搭配 grep 過濾 deleted 狀態的檔案:
    lsof | grep deleted
    紅框標示的即為先前刪除的大型檔案。
  2. 釋放空間
    重啟對應進程(或直接 kill 進程)。若設有自動重啟機制,服務會自動拉起。
    操作後 df 顯示已用空間驟降至 3,226,324 KB(約 3.08 GB),接近 du 統計值。
  3. 逐一處理其餘 deleted 檔案
    依序重啟相關進程,最終 df 與 du 數值趨近一致,成功追回「流失」空間。

生產環境避免重啟伺服器,此法可線上釋放被佔用空間,無需停機維護。

Copyright © Windows教程網 All Rights Reserved