【Linux】使用du、df 和 sort 命令快速找出Linux系統中的大文件

在性能測試中,咱們常常要關注系統磁盤空間,防止因磁盤空間佔滿而致使的報錯,那麼具體怎麼查看磁盤空間的大小呢?怎麼找到佔用空間最大的文件呢?

使用df、du並結合sort,能夠快速找到系統中的大文件python

1、df 和 du 二者區別

一、df---disk free

  • 能夠快速獲取 磁盤 被佔用了多少空間,目前還剩下多少空間等信息。

二、du---disk usage

  • 顯示磁盤空間的使用狀況,統計 目錄(或文件)所佔磁盤空間的大小。

是否是感受字面看起來沒啥區別呀?哈哈,實際有不少不一樣哦centos

三、df 和 du 的不一樣點:

(1)統計的範圍不一樣app

df 是從整體上統計系統各磁盤的佔用狀況,不能統計具體的文件夾或文件的大小。

du 既能夠從整體上統計,又能夠統計具體的某個文件夾或文件的大小。

(2)計算方式不一樣,計算速度不一樣性能

df 經過文件系統來快速獲取空間大小的信息,速度快,效率高

du 經過逐級進入指定目錄的每個子目錄,逐個計算每一個文件大小並相加,最終顯示出來。
因此計算速度慢,當文件目錄較多文件較大時要等好久好久!!
並且由於要進入每一個子目錄計算文件大小,若是當前用戶對某些文件/夾沒有訪問權限時,沒法進行計算。

(3)計算結果的差別測試

df  能夠獲取已經刪除的文件。
因爲df是經過文件系統來獲取空間大小的,當咱們刪除一個文件的時候,這個文件不是立刻就在文件系統當中消失了,而是暫時消失了,
當全部程序都不用時,纔會根據OS的規則釋放掉已經刪除的文件。
因此當一個文件剛刪除清空沒徹底釋放時,df 仍會把它計算在內。
(當你刪除一個大文件先後能夠分別用df 命令查看一下,剛刪除時還在佔用磁盤空間)

du 只能看到當前存在的、沒有被刪除的文件。
他計算的大小就是當前他認爲存在的全部文件大小的累加和。


當文件系統也肯定刪除了該文件後,這時候du與df 的結果就一致了。
因此在這一點上,能夠說du 計算更精確,也能夠說df 計算有延遲,根據我的狀況使用就行。

2、df 命令

一、df -h

(-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 分區名

該命令能夠指定顯示某個分區的佔用狀況,用的比較少

當使用 df -h 命令看到磁盤佔用較高時,須要使用 du 命令進一步查看哪些文件較大,進而刪除。排序

3、du 命令

一、du -sh

(-h 參數一樣是爲了提升可讀性,-s 表明summary,只顯示總大小)
[app@VM_18_18_centos jjingli]$ du -sh
6.4G

默認顯示當前目錄下全部文件和文件夾的總大小。class

當目錄下文件夾特別多時,記得不要去掉-s參數,否則會把全部文件夾下的全部文件分別列出來。效率

二、du -sh 目錄名

du -sh 在不指定目錄的狀況下,默認會顯示當前目錄下的全部子目錄的總大小。sed

du -sh 目錄名 在指定目錄的狀況下,會顯示指定目錄下的全部文件或文件夾的大小。

du -sh *  # 顯示當前目錄下的全部文件和文件夾大小

du -sh /  # 顯示根目錄下全部的文件和文件夾大小

du -sh /data  # 顯示/data目錄下全部的文件和文件夾大小

三、du 和 sort 結合對文件排序

# 查看/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
相關文章
相關標籤/搜索