1. 程式人生 > >linux的du和df命令

linux的du和df命令

documents master root權限 linux

今天也有同學問我Linux下查看目錄大小的命令,現在也將前陣子學習到du/df兩個命令總結一下吧。
前陣子測試工作中有遇到過由於磁盤空間滿導致程序無法執行到情況,所以使用了df和du兩個命令。

du查看目錄大小,df查看磁盤使用情況。
我常使用的命令(必要時,sudo使用root權限),
1.查看某個目錄的大小:du -hs /home/master/documents
查看目錄下所有目錄的大小並按大小降序排列:sudo du -sm /etc/* | sort -nr | less
2.查看磁盤使用情況(文件系統的使用情況):sudo df -h
df --block-size=GB

-h是使輸出結果更易於人類閱讀;du -s只展示目錄的使用總量(不分別展示各個子目錄情況),-m是以MB為單位展示目錄的大小(當然-k/-g就是KB/GB了)。

更多信息,還是man du 和 man df 來獲得吧。

du - estimate file space usage
Summarize disk usage of each FILE, recursively for directories.

df - report file system disk space usage
Show information about the file system on which each FILE resides, or all file systems by default.
df displays the amount of disk space available on the file system containing each file nameargument. If no file name is given, the space available on all currently mounted file systems is shown.

du
du的英文為:disk usage,含義是磁盤空間使用情況,功能是逐級進入指定目錄的每一個子目錄並顯示該目錄占用文件系統數據塊的情況,如果沒有指定目錄,則對當前的目錄進行統計。
du的命令各個選項含義如下:

a:顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
s:只顯示各檔案大小的總合
b:大小用bytes來表示
x:跳過在不同文件系統上的目錄不予統計
a:遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數據塊數
...
使用du進行查看
[email protected]:/home/htmlfile# du
16 ./test
60 ./bbb
84 .

其中第一列是以塊為單位計的磁盤空間容量,第二列列出目錄中使用這些空間的目錄名稱


1)查看當前目錄包含子目錄的大小
[email protected]:/home/htmlfile# du -sm .
1 .
其中的du -sm . 的“.”是代表當前目錄。

2)查看當前目錄以及子目錄的大小
[email protected]:/home/htmlfile# du -h
16K ./test
60K ./bbb
84K .
其中 -h 表示使用K,M,G的人性化形式顯示。

3)看到當前目錄下的bbb目錄大小,但不想查看其他目錄以及子目錄
[email protected]:/home/htmlfile# du -ch bbb | tail -n 1
60K total
使用了管道包含了du和tail兩個命令,-c表示最後計算出所列目錄的大小之和。

4)列出當前目錄下所有目錄和文件的大小
[email protected]:/home/htmlfile# du -ah bbb
4.0K bbb/MySQL.PHP
4.0K bbb/index.htm
4.0K bbb/p.php
28K bbb/memcache.php
12K bbb/.session.php.swp
4.0K bbb/hello.html
60K bbb
其中-a表示包含目錄和文件

5)不換行列出目錄以及子目錄大小的信息
[email protected]:/home/htmlfile# du -0h
16K ./test60K ./bbb84K .[email protected]:/home/htmlfile#
其中 -0 表示列出一條信息後不換行,接著輸出第二條信息。

df
於du不同的是,du是面向文件的命令,只計算被文件占用的空間。不計算文件系統metadata 占用的空間。df則是基於文件系統總體來計算,通過文件系統中未分配空間來確定系統中已經分配空間的大小。df命令可以獲取硬盤占用了多少空間,還剩下多少空間,它也可以顯示所有文件系統對i節點和磁盤塊的使用情況。

df命令各個選擇的含義如下:

a:顯示全部的檔案系統和各分割區的磁盤使用情形
i:顯示i -nodes的使用量
k:大小用k來表示 (默認值)
t:顯示某一個檔案系統的所有分割區磁盤使用量
x:顯示不是某一個檔案系統的所有分割區磁盤使用量
T:顯示每個分割區所屬的檔案系統名稱
....

使用df進行查看

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/cciss/c0d0p1 2068156 611572 1351528 32% /
tmpfs 1038080 4 1038076 1% /lib/init/rw
udev 10240 64 10176 1% /dev
tmpfs 1038080 4 1038076 1% /dev/shm
/dev/cciss/c0d0p9 130700120 44034236 86665884 34% /home
/dev/cciss/c0d0p7 2068156 68932 1999224 4% /tmp
/dev/cciss/c0d0p8 4132372 1760620 2161840 45% /usr
/dev/cciss/c0d0p6 2068156 330104 1632996 17% /var

第一行是文件系統對應的硬盤分區
第二行是分區包含的數據塊的數據(1數據庫為1024字節)
第三四行是已用和未用的數據塊數組
第五行是普通用戶空間使用的百分比
第六行是文件系統的安裝點

其中第三四行已用和未用數據塊相加並不等於第二行總數據塊,這是因為分區留了少量空間提供給

系統管理員使用。

1)
[email protected]:~$ df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/cciss/c0d0p1 2.0G 598M 1.3G 32% /
tmpfs 1014M 4.0K 1014M 1% /lib/init/rw
udev 10M 64K 10M 1% /dev
tmpfs 1014M 4.0K 1014M 1% /dev/shm
/dev/cciss/c0d0p9 125G 42G 83G 34% /home
/dev/cciss/c0d0p7 2.0G 68M 2.0G 4% /tmp
/dev/cciss/c0d0p8 4.0G 1.7G 2.1G 45% /usr
/dev/cciss/c0d0p6 2.0G 333M 1.6G 18% /var
其中 -h 表示使用K,M,G的人性化形式顯示。

2)
[email protected]:~$ df -ia
文件系統 Inode (I)已用 (I)可用 (I)已用% 掛載點
/dev/cciss/c0d0p1 262752 60150 202602 23% /
tmpfs 224142 10 224132 1% /lib/init/rw
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
procbususb 0 0 0 - /proc/bus/usb
udev 224142 770 223372 1% /dev
tmpfs 224142 3 224139 1% /dev/shm
devpts 0 0 0 - /dev/pts
/dev/cciss/c0d0p9 130763968 1972907 128791061 2% /home
/dev/cciss/c0d0p7 262752 54 262698 1% /tmp
/dev/cciss/c0d0p8 524832 35743 489089 7% /usr
/dev/cciss/c0d0p6 262752 4896 257856 2% /var
所謂的 inode 是用來存放檔案及目錄的基本信息,包含時間、檔名、使用者及群組等。在分割扇區時,系統會先做出一堆 inode 以供以後使用,inode 的數量關系著系統中可以建立的檔案及目錄總數。如果要存的檔案大部分都很小,則同樣大小的硬盤中會有較多的檔案,也就是說需要較多的 inode 來掛檔案及目錄


本文出自 “夢Dream” 博客,請務必保留此出處http://dreamy.blog.51cto.com/12471447/1937480

linux的du和df命令