兩臺mac筆記本硬盤都是128G的空間,致使須要按期手動清理硬盤;測試服務器是兩套環境共享100G的空間,清理環境的首要問題就是找到空間被誰佔用了,重要的工具就是du和df;linux
1 du的工做原理服務器
du命令會對待統計文件逐個調用fstat這個系統調用,獲取文件大小。它的數據是基於文件獲取的,因此有很大的靈活性,不必定非要針對一個分區,能夠跨越多個分區操做。若是針對的目錄中文件不少,du速度就會很慢了。工具
2 df的工做原理測試
df命令使用的事statfs這個系統調用,直接讀取分區的超級塊信息獲取分區使用狀況。它的數據是基於分區元數據的,因此只能針對整個分區。因爲df直接讀取超級塊,因此運行速度不受文件多少影響。spa
3 du和df不一致狀況模擬進程
常見的df和du不一致狀況就是文件刪除的問題。當一個文件被刪除後,在文件系統 目錄中已經不可見了,因此du就不會再統計它了。然而若是此時還有運行的進程持有這個已經被刪除了的文件的句柄,那麼這個文件就不會真正在磁盤中被刪除, 分區超級塊中的信息也就不會更改。這樣df仍舊會統計這個被刪除了的文件。原理
通常使用df查看整個硬盤的使用狀況,du查看局部硬盤佔用狀況; 統計
linux通常使用命令進行查看一級目錄的大小:du -h --max-depth=1(mac下沒法使用)數據
mac系統使用命令進行查看一級目錄的大小:du -sh *(兼容linux)兼容