很多時候df查看磁盤容量爲什麼比du統計所有目錄大小高

首先區分下這兩個指令:

du:功能是逐級進入指定目錄的每一個子目錄並顯示該目錄佔用文件系統數據塊的情況,如果沒有指定目錄,則對當前的目錄進行統計

各個參數:

a:顯示全部目錄和其次目錄下的每個檔案所佔的磁盤空間
s:只顯示各檔案大小的總合 
b:大小用bytes來表示
h:大小以方便讀的單位展示,如MB,GB。

...更多使用說明找男人(man du)

常用:

du -sh:統計當前目錄佔的磁盤大小

su -sh *: 統計當前目錄下各個目錄佔的大小


df:於du不同的是,du是面向文件的命令,只計算被文件佔用的空間。不計算文件系統metadata 佔用的空間。df則是基於文件系統總體來計算,通過文件系統中未分配空間來確定系統中已經分配空間的大小。df命令可以獲取硬盤佔用了多少空間,還剩下多少空間

常用參數

a:顯示全部的檔案系統和各分割區的磁盤使用情形
i:顯示i -nodes的使用量
k:大小用k來表示 (默認值)

常用命令:

df -h

-------------------------------------------------------------------

下面做一個小實驗,看下爲什麼df比du總和高。

首先df查看磁盤使用情況,tomcat包的大小爲170M.


此時使用tail -f tomcat.tar模擬進程調用這個包


另開一個shell,刪除這個包


此時統計磁盤使用情況沒有變化,直到殺掉進程,磁盤已使用減少


結論:

1、若有進程在佔用某個文件,而其他進程把這文件刪掉,只會刪除其在磁盤中的標記,而不會釋放其佔用的磁盤空間;直到所有訪問該文件的進程退出爲止;
2、df 是從內核中獲取磁盤佔用情況數據的,而du是統計當前磁盤文件大小的結果,由於磁盤標記已被刪掉,因此du 不會計算上述被刪除文件的空間,導致df 與 du的結果不一致

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章