在性能測試中,咱們常常要關注系統磁盤空間,防止因磁盤空間佔滿而致使的報錯,那麼具體怎麼查看磁盤空間的大小呢?怎麼找到佔用空間最大的文件呢?
使用df、du並結合sort,能夠快速找到系統中的大文件!python
磁盤
被佔用了多少空間,目前還剩下多少空間等信息。目錄(或文件)
所佔磁盤空間的大小。是否是感受字面看起來沒啥區別呀?哈哈,實際有不少不一樣哦centos
(1)統計的範圍不一樣app
df 是從整體上統計系統各磁盤的佔用狀況,不能統計具體的文件夾或文件的大小。 du 既能夠從整體上統計,又能夠統計具體的某個文件夾或文件的大小。
(2)計算方式不一樣,計算速度不一樣性能
df 經過文件系統來快速獲取空間大小的信息,速度快,效率高 du 經過逐級進入指定目錄的每個子目錄,逐個計算每一個文件大小並相加,最終顯示出來。 因此計算速度慢,當文件目錄較多文件較大時要等好久好久!! 並且由於要進入每一個子目錄計算文件大小,若是當前用戶對某些文件/夾沒有訪問權限時,沒法進行計算。
(3)計算結果的差別測試
df 能夠獲取已經刪除的文件。 因爲df是經過文件系統來獲取空間大小的,當咱們刪除一個文件的時候,這個文件不是立刻就在文件系統當中消失了,而是暫時消失了, 當全部程序都不用時,纔會根據OS的規則釋放掉已經刪除的文件。 因此當一個文件剛刪除清空沒徹底釋放時,df 仍會把它計算在內。 (當你刪除一個大文件先後能夠分別用df 命令查看一下,剛刪除時還在佔用磁盤空間) du 只能看到當前存在的、沒有被刪除的文件。 他計算的大小就是當前他認爲存在的全部文件大小的累加和。 當文件系統也肯定刪除了該文件後,這時候du與df 的結果就一致了。 因此在這一點上,能夠說du 計算更精確,也能夠說df 計算有延遲,根據我的狀況使用就行。
(-h參數使結果以K,M,G爲單位,提升信息的可讀性)
[app@VM_18_18_centos jjingli]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 15G 4.3G 78% / /dev/vdb 118G 100G 13G 89% /data
默認顯示系統全部的磁盤狀況,此圖中顯示當前一共有兩個硬盤分區,及各自的佔用狀況。code
該命令能夠指定顯示某個分區的佔用狀況,用的比較少
當使用 df -h
命令看到磁盤佔用較高時,須要使用 du
命令進一步查看哪些文件較大,進而刪除。排序
(-h 參數一樣是爲了提升可讀性,-s 表明summary,只顯示總大小)
[app@VM_18_18_centos jjingli]$ du -sh 6.4G
默認顯示當前目錄下全部文件和文件夾的總大小。class
當目錄下文件夾特別多時,記得不要去掉-s參數,否則會把全部文件夾下的全部文件分別列出來。效率
du -sh 在不指定目錄的狀況下,默認會顯示當前目錄下的全部子目錄的總大小。sed
du -sh 目錄名
在指定目錄的狀況下,會顯示指定目錄下的全部文件或文件夾的大小。
du -sh * # 顯示當前目錄下的全部文件和文件夾大小 du -sh / # 顯示根目錄下全部的文件和文件夾大小 du -sh /data # 顯示/data目錄下全部的文件和文件夾大小
# 查看/data目錄下的全部文件和文件夾大小,並從大到小排序 du -sh /data | sort -nr 這個命令對嗎? 不對!由於du -sh展現的結果單位不一樣,可是sort排序只能針對數字,致使980KB的文件排在1GB文件的前面。 # 查看/data目錄下的全部文件和文件夾大小,找出全部GB大小的文件,並從大到小排序 du -sh /data | grep G | sort -nr # 這樣就能夠達到目的了~, 可是若是文件夾較多的話,還要一個一個的進入去找,怎麼解決呢?接着看下面: # 去掉 -s 參數,能夠直接查看包括全部文件夾下的全部文件 du -h /data | grep G | sort -nr