天天看點

du指令和df指令的差別du 指令

du指令和df指令額差別

du指令:

disk usage,是通過搜尋檔案來計算每個檔案的大小然後累加,du能看到的檔案隻是一些目前存在的,沒有被删除的。他計算的大小就是目前他認為存在的所有檔案大小的累加和。

df指令:

disk free,通過檔案系統來快速擷取空間大小的資訊,當我們删除一個檔案的時候,這個檔案不是馬上就在檔案系統當中消失了,而是暫時消失了,當所有程式都不用時,才會根據OS的規則釋放掉已經删除的檔案, df記錄的是通過檔案系統擷取到的檔案的大小,他比du強的地方就是能夠看到已經删除的檔案,而且計算大小的時候,把這一部分的空間也加上了,更精确了。

從上面的解釋我們可以得知,df比du指令計算更精确,當一個檔案被删除,但是該檔案的句柄仍然被程序占用時,du不會計算該檔案的占用空間,但是df會計算。

如何檢視已經删除但仍然被其他程序占用句柄的檔案?

lsof | grep delete

<a href="http://s4.51cto.com/wyfs02/M01/82/80/wKiom1dXeNrRavIMAAUedtLcrSU351.png-wh_500x0-wm_3-wmp_4-s_2480353976.png" target="_blank"></a>

du [選項][檔案]

顯示每個檔案和目錄的磁盤使用空間。

-a或-all  顯示目錄中個别檔案的大小。   

-b或-bytes  顯示目錄或檔案大小時,以byte為機關。   

-c或--total  除了顯示個别目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。 

-k或--kilobytes  以KB(1024bytes)為機關輸出。

-m或--megabytes  以MB為機關輸出。   

-s或--summarize  僅顯示總計,隻列出最後加總的值。

-h或--human-readable  以K,M,G為機關,提高資訊的可讀性。

-x或--one-file-xystem  以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。 

-L&lt;符号連結&gt;或--dereference&lt;符号連結&gt; 顯示選項中所指定符号連結的源檔案大小。   

-S或--separate-dirs   顯示個别目錄的大小時,并不含其子目錄的大小。 

-X&lt;檔案&gt;或--exclude-from=&lt;檔案&gt;  在&lt;檔案&gt;指定目錄或檔案。   

--exclude=&lt;目錄或檔案&gt;         略過指定的目錄或檔案。    

-D或--dereference-args   顯示指定符号連結的源檔案大小。   

-H或--si  與-h參數相同,但是K,M,G是以1000為換算機關。   

-l或--count-links   重複計算硬體連結的檔案。  

使用示例:

<a href="http://s3.51cto.com/wyfs02/M01/82/7F/wKioL1dXfLeAiPfkAABMNn23Ulk454.png-wh_500x0-wm_3-wmp_4-s_2378450552.png" target="_blank"></a>

linux中df指令的功能是用來檢查linux伺服器的檔案系統的磁盤空間占用情況。可以利用該指令來擷取硬碟被占用了多少空間,目前還剩下多少空間等資訊。

df [選項] [檔案]

顯示指定磁盤檔案的可用空間。如果沒有檔案名被指定,則所有目前被挂載的檔案系統的可用空間将被顯示。預設情況下,磁盤空間将以 1KB 為機關進行顯示,除非環境變量 POSIXLY_CORRECT 被指定,那樣将以512位元組為機關進行顯示

必要參數:

-a 全部檔案系統清單

-h 友善閱讀方式顯示

-H 等于“-h”,但是計算式,1K=1000,而不是1K=1024

-i 顯示inode資訊

-k 區塊為1024位元組

-l 隻顯示本地檔案系統

-m 區塊為1048576位元組

--no-sync 忽略 sync 指令

-P 輸出格式為POSIX

--sync 在取得磁盤資訊前,先執行sync指令

-T 檔案系統類型

選擇參數:

--block-size=&lt;區塊大小&gt; 指定區塊大小

-t&lt;檔案系統類型&gt; 隻顯示標明檔案系統的磁盤資訊

-x&lt;檔案系統類型&gt; 不顯示標明檔案系統的磁盤資訊

--help 顯示幫助資訊

--version 顯示版本資訊

df指令使用示例:

從“du -sh  / ”指令結果和"df -h"指令結果來看“/”分區的使用空間都是6.8G。表示沒有被删除的檔案的句柄被程序占用。

列舉一個被删除檔案句柄被占用的例子

<a href="http://s1.51cto.com/wyfs02/M00/82/7F/wKioL1dXfanS4aEnAAIWc8QXtKg362.png-wh_500x0-wm_3-wmp_4-s_1202284625.png" target="_blank"></a>

從上圖可以看到du指令計算出的/分區的占用空間為32G-28G=4G。df指令計算出的/分區的使用空間為12G,表示/分區有12G-4G=8G空間的檔案句柄被程序占用的,沒有釋放掉。要解決這個問題,重新開機系統或者對應的程序就可以了。

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1787191,如需轉載請自行聯系原作者

繼續閱讀