df 和 du 命令詳解

df查看磁盤分區信息
du查看某文件夾下各文件使用磁盤空間大小

df命令詳細用法

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

操作詳解

引用
指令df可以顯示目前所有檔案系統的最大可用空間及使用情形,請看下列這個例子:

#df-h
FilesystemSizeUsedAvailCapacityMountedon
/dev/ad0s1a1.9G389M1.4G21%/
devfs1.0K1.0K0B100%/dev
/dev/ad0s1d989M54K910M0%/tmp
/dev/ad0s1f4.8G3.8G657M86%/usr
/dev/ad0s1e1.9G149M1.6G8%/var
/dev/ad0s1g26G890K24G0%/volume2
/dev/da0s1d325G261G38G87%/volume1

我們加了參數-h表示使用「Human-readable」的輸出,也就是在檔案系統大小使用GB、MB等易讀的格式。

上面的指令輸出的第一個字段及最後一個字段分別是檔案系統及其掛入點。我們可以看到/dev/ad0s1a這個分割區被掛在根目錄下。我們在上一小節提到過ad所代表的是IDE的硬盤,而s1表示第一個主要扇區。我另外有一個SCSI硬盤,它的代號是da,它的容量很大,主要用來存放數據。devfs是一個特別的檔案系統,該檔案系統並非真的磁盤,而是FreeBSD用來管理系統硬件裝置的虛擬檔案系統。

接下來的四個字段Size、Used、Avail、及Capacity分別是該分割區的容量、已使用的大小、剩下的大小、及使用的百分比。當硬盤容量已滿時,您可能會看到已使用的百分比超過100%,因爲FreeBSD會留一些空間給root,讓root在檔案系統滿時,還是可以寫東西到該檔案系統中,以進行管理。

另外,我們還可以使用參數-i來查看目前檔案系統inode的使用情形。有的時候雖然檔案系統還有空間,但若沒有足夠的inode來存放檔案的信息,一樣會不能增加新的檔案。

#df-ih
FilesystemSizeUsedAvailCapacityiusedifree%iusedMountedon
/dev/ad0s1a1.9G389M1.4G21%204952621277%/
devfs1.0K1.0K0B100%00100%/dev
/dev/ad0s1d989M62K910M0%241412860%/tmp
/dev/ad0s1f4.8G3.8G657M86%31143934801547%/usr
/dev/ad0s1e1.9G149M1.6G8%17582808641%/var
/dev/ad0s1g26G890K24G0%1235327860%/volume2
/dev/da0s1d325G261G38G87%707277433114092%/volume1
我們可以看到根目錄的已經用掉的inode數量爲20495,還有262127的可用inode。

小提示
還記得什麼是inode嗎?所謂的inode是用來存放檔案及目錄的基本信息(metadata),包含時間、檔名、使用者及羣組等。在分割扇區時,系統會先做出一堆inode以供以後使用,inode的數量關係着系統中可以建立的檔案及目錄總數。如果要存的檔案大部分都很小,則同樣大小的硬盤中會有較多的檔案,也就是說需要較多的inode來掛檔案及目錄。


du:查詢檔案或目錄的磁盤使用空間

a:顯示全部目錄和其次目錄下的每個檔案所佔的磁盤空間
b:大小用bytes來表示(默認值爲kbytes)
c:最後再加上總計(默認值)
s:只顯示各檔案大小的總合(summarize)
x:只計算同屬同一個檔案系統的檔案
L:計算所有的檔案大小
常用命令:du-a

操作詳解

引用
指令du能以指定的目錄下的子目錄爲單位,顯示每個目錄內所有檔案所佔用的磁盤空間大小。例如:

#du-h/etc
104K/etc/defaults
6.0K/etc/X11
8.0K/etc/bluetooth
4.0K/etc/gnats
52K/etc/isdn
388K/etc/mail
68K/etc/mtree
2.0K/etc/ntp
38K/etc/pam.d
44K/etc/periodic/daily
6.0K/etc/periodic/monthly
42K/etc/periodic/security
16K/etc/periodic/weekly
110K/etc/periodic
6.0K/etc/ppp
318K/etc/rc.d
2.0K/etc/skel
130K/etc/ssh
10K/etc/ssl
1.7M/etc
我們目樣使用-h參數來顯示human-readable的格式。在應用時,我們可以使用du這個指令來查看哪個目錄佔用最多的空間。不過,du的輸出結果通常很長,我們可以加上-s參數來省略指定目錄下的子目錄,而只顯示該目錄的總合即可:

#du-sh/etc
1.7M/etc
在查看目錄的使用情形時,我們可以將輸出結果導到sort指令進行排序,以瞭解哪個檔案用了最多的空間:

#du/etc|sort-nr|more
1746/etc
388/etc/mail
318/etc/rc.d
130/etc/ssh
110/etc/periodic
104/etc/defaults
68/etc/mtree
52/etc/isdn
44/etc/periodic/daily
42/etc/periodic/security
38/etc/pam.d
16/etc/periodic/weekly
10/etc/ssl
8/etc/bluetooth
6/etc/ppp
6/etc/periodic/monthly
6/etc/X11
4/etc/gnats
2/etc/skel
2/etc/ntp
sort的參數-nr表示要以數字排序法進行反向排序,因爲我們要對目錄大小做排序,所以不可以使用human-readable的大小輸出,不然目錄大小中會有K、M等字樣,會造成排序不正確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章