天天看點

linux指令實踐-du

du指令用來檢視目錄或檔案所占用磁盤空間的大小。常用選項組合為:du -sh

  一、du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments). with no arguments,`du` reports the disk space for the current directory。

  很明顯,與df不同,它用來檢視檔案或目錄所占用的磁盤空間的大小。

  二、du常用的選項:

  -h:以人類可讀的方式顯示

  -a:顯示目錄占用的磁盤空間大小,還要顯示其下目錄和檔案占用磁盤空間的大小

  -s:顯示目錄占用的磁盤空間大小,不要顯示其下子目錄和檔案占用的磁盤空間大小

  -c:顯示幾個目錄或檔案占用的磁盤空間大小,還要統計它們的總和

  --apparent-size:顯示目錄或檔案自身的大小

  -l :統計硬連結占用磁盤空間的大小

  -L:統計符号連結所指向的檔案占用的磁盤空間大小

  一、du -h:這個就不多說了。

  二、du -a:使用此選項時,顯示目錄和目錄下子目錄和檔案占用磁盤空間的大小。

  可以看出,預設情況下du隻顯示download目錄占用磁盤空間的大小,而使用-a選項後,它不僅顯示了目錄(最後一行),而且顯示了目錄下各個檔案占用磁盤空間的大小。

  三、du -s:使用此選項時,du隻顯示目錄所占用磁盤空間的大小,而不顯示其下子目錄和檔案占用磁盤空間的資訊。

  預設情況下,du不顯示目錄下檔案占用磁盤空間的資訊,但它會顯示其下子目錄占用磁盤空間的資訊;而使用-s選項以後,隻顯示xx目錄占用磁盤空間的大小。

  四、du --apparent-size:顯示檔案或目錄自身大小,而不是它們占用的磁盤空間大小。檔案或目錄占用磁盤空間的大小與它們自身大小有時候并非完全一緻;這種現象非linux所獨有,windows裡也是如此。我們看這個選項的幫助文檔的解釋:The apparent size of a file is the number of bytes reported by `wc –c` regular files ,or more generally, `ls –l –block-size=1` or `stat –format=%s`.For example, a file containing the word `zoo` with no newline would, of course, have an apparent size of 3. Such a small file may require anywhere from 0 to 16 kib or more of disk space, depending on the type and configuration of the file system on which the file resides.

  這段話給出了檔案或目錄自身大小與占用磁盤空間大小的差別。他下面舉出了一個更加誇張的例子,這裡就不把它寫出來了。我們知道了:wc或ls --block-size顯示的是其自身大小,而du給出的則是占用的磁盤空間的大小。

  五、du -c:使用此選項時,不僅顯示幾個檔案或目錄各自占用磁盤空間的大小,還統計它們的總和。

如圖所示,加上-c選項後,du不僅顯示兩個目錄各自占用磁盤空間的大小,還在最後一行統計它們的總和。

  六、du -l:這個選項主要是針對硬連結。在統計目錄占用磁盤空間大小時,-l選項會把硬連結也統計進來。幫助文檔是這樣解釋的:Count the size of all files,even if they have appeared already(as a hard link)。

  我們在download目錄下建立一個硬連結,指向本目錄下的一個檔案。不使用-l選項時,du發現硬連結指向本目錄下的檔案,于是自動忽略該連結檔案,以免造成重複統計;使用-l選項,du才會把硬連結檔案也統計進來。

  七、du -L:這個選項主要是針對符号連結。它會把符号連結所指向的檔案占用磁盤空間的大小也統計進來。幫助文檔是這樣解釋的:Dereference symbolic links(show the disk space used by the file or directory that the link points to instead of the space used by the link)。

   我們在download目錄下建立一個符号連結,指向本目錄下的一個檔案。我們看到上面圖檔中顯示的操作結果,當使用-L選項時,du會把符号連結所指向的檔案的大小也統計到目錄裡來。

  另外我們看du -lh的結果,與du -h相同,好像沒有統計出符号連結的大小;其實并非如此。從實際操作來看,符号連結本身似乎并不占用磁盤空間,是以才出現上述情況。

  最後,du指令在統計目錄占用磁盤空間時,預設不統計連結檔案(無論是硬連結或是符号連結),是以要用-l和-L選項特地指出來;此外,du指令預設不顯示目錄下檔案占用磁盤空間的資訊,但是卻預設顯示其下子目錄所占用磁盤空間的資訊。怪哉。

本文轉自 li_qinshan 51CTO部落格,原文連結:http://blog.51cto.com/share/201028

繼續閱讀