Disk-Usage

為什麼 du 和 quota 結果不匹配?

  • September 22, 2014

我在一個沒有 root 訪問權限的系統上超出了我的磁碟配額。我嘗試刪除舊文件,但仍然結束。我試著跑去du找我用完所有空間的地方,但它報告我用的很少。

結果來自quota

  /home/1234$ quota -s
  Disk quotas for user 1234 (uid 1234): 
       Filesystem   space   quota   limit   grace   files   quota   limit   grace
      cslab:/home   4519M*  4096M   5120M   09:47    6155       0       0 

du

  /home/1234$ du -mad 1
  ...
  936     total

我不明白為什麼quota說我使用的是 4.5GB 而du只計算 0.9GB。我還檢查了我擁有的文件/tmp,那裡有 50MB 的文件。其他 3.5GB 的文件在哪裡?配額系統是否可能錯誤並需要重置?

我相信某些程序可能仍會保留一些文件。您可以嘗試使用列出它們,

lsof | grep username | grep deleted

一個更好的版本是使用,

lsof +L1 | grep username

但是,有時輸出之間可能存在差異,du並且quota在此連結中對此進行了解釋。摘自連結,

在 Unix 中,du 和 quota 命令可能報告不同的值。造成這種差異的原因是,通過文件系統、檢查配額和更新使用表的程序僅在特定時間執行。因此,在配額檢查之間會有一段時間,quota -v 命令會報告不正確的磁碟使用情況。使用 du 命令獲取有關文件大小的最準確資訊。

引用自:https://unix.stackexchange.com/questions/156897