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<符号連結>或--dereference<符号連結> 顯示選項中所指定符号連結的源檔案大小。
-S或--separate-dirs 顯示個别目錄的大小時,并不含其子目錄的大小。
-X<檔案>或--exclude-from=<檔案> 在<檔案>指定目錄或檔案。
--exclude=<目錄或檔案> 略過指定的目錄或檔案。
-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=<區塊大小> 指定區塊大小
-t<檔案系統類型> 隻顯示標明檔案系統的磁盤資訊
-x<檔案系統類型> 不顯示標明檔案系統的磁盤資訊
--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,如需轉載請自行聯系原作者