1. 程式人生 > >du 和 df以及lsof

du 和 df以及lsof

du:disk usage

通過搜尋檔案來計算每個檔案的大小然後累加得到的值。

 

df:disk free

通過檔案系統來獲取空間大小的資訊。

 

如果使用者刪除了一個正在執行的應用程式所開啟的某個目錄下的檔案:

  • du命令返回的值,顯示出減去了該檔案後的總大小
  • df命令返回的值,則不顯示減去該檔案後的大小(檔案控制代碼還在被使用),直到該執行的應用程式關閉了這個開啟的檔案(才會真正釋放空間)

 

常見的場景是,刪除了一個很大的正在寫入的tomcat的access日誌,du顯示的結果會把日誌大小減去,而df則仍會包含該日誌的大小(實際上tomcat仍引用了該檔案的控制代碼

)。

 

對我們的啟示是,如果要刪除某個access日誌,不要粗暴的rm,而要溫柔的:

echo "" > access.log

 

如何發現被應用程式引用著“已刪除”檔案呢?

lsof -n |grep deleted

lsof簡介lsof(list open files)是一個列出當前系統開啟檔案的工具。