du命令_Linux du命令:檢視資料夾和檔案的磁碟佔用情況

2020-07-16 10:04:31
du 命令,全稱是 disk usage,用來展示磁碟使用量的統計資訊。

du 和 df 算是一對同門師兄弟,du 側重在資料夾和檔案的磁碟佔用方面,而 df 則側重在檔案系統級別的磁碟佔用方面。這兩個命令都非常的基礎,也是每位 Linux 工程師都應該掌握的命令。

du 的最常用用法

最常用的用法,當然就是檢視當前所在資料夾的總磁碟佔用量了。
#列出當前目錄下的檔案和子資料夾
[[email protected] ruanjian]$ ls -F
curl-7.34.0.tar.gz  soft/  wordpress-4.4.1.tar.gz
 
#計算當前資料夾的總磁碟佔用量, -s選項表示計算總和, -h選項表示以恰當的K/M/G單位展示
[[email protected] ruanjian]$ du -sh .
51M

這裡有一個比較有意思的事情,在 Linux 命令中,-h選項常常代表“展示幫助資訊”,即 --help 的縮寫形式。但是,du 命令卻不走尋常路,它的-h選項是 --human-readable 的縮寫形式,表示以人類可讀的形式展示磁碟使用量的單位名稱(K/M/G)。

說說 -s 選項和 -c 選項的作用

-s選項,是 --summarize 的縮寫形式,其作用是對 du 的每一個給定引數計算其磁碟使用量,我們來看例子。
#當前資料夾下有2個tar.gz檔案和1個soft資料夾
[[email protected] ruanjian]$ ls -F
curl-7.34.0.tar.gz  soft/  wordpress-4.4.1.tar.gz
 
#通配形式的引數首先被Shell解析, 然後-s選項發揮作用, 展示每一個引數對應的磁碟空間使用量
[[email protected] ruanjian]$ du -sh *
3.4M    curl-7.34.0.tar.gz
41M     soft
6.8M    wordpress-4.4.1.tar.gz

-c選項,是 --total 的縮寫形式,它表示的是針對輸出的各個物件來計算其磁碟使用量的總和。比如,我們想計算當前資料夾下所有字尾是 tar.gz 的檔案的磁碟使用量總和,那麼命令是這樣的:
[[email protected] ruanjian]$ du -ch *.tar.gz
3.4M    curl-7.34.0.tar.gz
6.8M    wordpress-4.4.1.tar.gz
11M     總用量
可以看到,最後一行展示出的 11M,便是-c選項起到的求和作用。

當然,-c選項也可以計算檔案和資料夾的混合求和:
[[email protected] ruanjian]$ du -ch curl-7.34.0.tar.gz soft
3.4M    curl-7.34.0.tar.gz
41M     soft
45M     總用量

在運維中,我們通常需要計算某一段時間範圍內的紀錄檔檔案的磁碟使用量,那麼-c選項就可以很好地滿足需求了。

用 --max-depth 選項控制深度

資料夾是可以巢狀的,有的時候,我們只想展示第一級或第二級子資料夾的資訊,而不希望 du 統計的層次太深,那麼我們可以用 --max-depth 選項來進行控制。

我們繪製了一個示意圖,movies 檔案中儲存了中美兩國 2016 年和 2017 年的一些電影大片,而且是按照型別來分的,包括探險片、愛情片、動作片。從圖 1 中可以看出,movies 資料夾中共有 3 級子資料夾。


圖1