df 和du 的區別 linux磁盤命令詳解

df 命令:經過文件系統中未分配的空間來肯定文件系統中已分配空間的大小。例如:若是一個文件系統中有 8192個512-byte 塊, 而且4096 個塊沒有被分配出去,那麼已分配的空間就是4096 個512-byte 的塊。
已分配空間 = 空間總數 - 未分配空間
由於基於文件系統整體來計算,因此df 命令是報告文件系統空間使用狀況最可靠的命令。
du 命令
是面向文件的命令,它計算分配給指定文件或者目錄的空間。 du 命令必須跟着目的參數,並且不能隔離文件系統。
例 如:運行 # du / 命令將計算全部在 / 文件系統下全部文件的空間分配信息。其中包括 / 文件系統全部的文件和安裝在 / 下面的,例如 /tmp, /var 和 /usr 下面的其餘文件系統的文件。能夠用 du 命令帶 -x 參數來限制僅在文件系統內進行操做。可是有時候會致使輸出結果不徹底。
du 命令只計算被文件佔用的空間。不計算文件系統metadata 佔用的空間,如inodes, inode maps, 或者disk maps。
du 命令只計算那些能夠訪問的文件所佔用的存儲空間, 有下面兩種狀況 du 命令不會計算已經分配給文件的空間。
Case1:
文件被隱藏了。
例如:若是一個文件存放在 /bobby 目錄下, 接着有文件系統安裝在 /bobby 目錄下, 那麼, du 命令將不會計算 /bobby 目錄下的文件所佔用的存儲空間。
case 2:
文件被其餘的應用的打開了,接着文件被刪除了。 在這種狀況下, 文件所佔用的存儲空間將維持着被分配的狀態直到全部對這個文件的訪問都被關閉。因爲目錄中沒有這個文件的相關紀錄,du 命令將不會計算這個文件的被分配空間,然而df 命令將計算這部分已分配的空間

兩個命令的操做詳解以下
df命令詳細用法

a:顯示所有的檔案系統和各分割區的磁盤使用情形 
i:顯示i -nodes的使用量 
k:大小用k來表示 (默認值) 
t:顯示某一個檔案系統的全部分割區磁盤使用量 
x:顯示不是某一個檔案系統的全部分割區磁盤使用量 
T:顯示每一個分割區所屬的檔案系統名稱 
經常使用命令:df -hi
引用例子:
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1.9G 389M 1.4G 21% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1d 989M 54K 910M 0% /tmp
/dev/ad0s1f 4.8G 3.8G 657M 86% /usr
/dev/ad0s1e 1.9G 149M 1.6G 8% /var
/dev/ad0s1g 26G 890K 24G 0% /volume2
/dev/da0s1d 325G 261G 38G 87% /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
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/ad0s1a 1.9G 389M 1.4G 21% 20495 262127 7% /
devfs 1.0K 1.0K 0B 100% 0 0 100% /dev
/dev/ad0s1d 989M 62K 910M 0% 24 141286 0% /tmp
/dev/ad0s1f 4.8G 3.8G 657M 86% 311439 348015 47% /usr
/dev/ad0s1e 1.9G 149M 1.6G 8% 1758 280864 1% /var
/dev/ad0s1g 26G 890K 24G 0% 12 3532786 0% /volume2
/dev/da0s1d 325G 261G 38G 87% 707277 43311409 2% /volume1
咱們能夠看到根目錄的已經用掉的 inode 數量爲 20495,還有 262127 的可用 inode。
小提示
還記得什麼是 inode 嗎?所謂的 inode 是用來存放檔案及目錄的基本信息 (metadata),包含時間、檔名、使用者及羣組等。在分割扇區時,系統會先作出一堆 inode 以供之後使用,inode 的數量關係着系統中能夠創建的檔案及目錄總數。若是要存的檔案大部分都很小,則一樣大小的硬盤中會有較多的檔案,也就是說須要較多的 inode 來掛檔案及目錄。


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


a:顯示所有目錄和其次目錄下的每一個檔案所佔的磁盤空間 
b:大小用bytes來表示 (默認值爲k bytes) 
c:最後再加上總計 (默認值) 
s:只顯示各檔案大小的總合 
x:只計算同屬同一個檔案系統的檔案 
L:計算全部的檔案大小 
經常使用命令:du -a
引用例子:
# 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 等字樣,會形成排序不正確。 關鍵詞:linux,df

使用df命令查看linux磁盤剩餘空間

[root]# df -hl 
文件系統               容量   已用   可用 已用% 掛載點 
/dev/hda5              487M   120M   342M   27% /
/dev/hda1              981M    21M   911M    3% /boot
none                   125M      0   125M    0% /dev/shm
/dev/hda2               29G   4.9G    23G   18% /home
/dev/hda3               20G   4.8G    14G   27% /usr
/dev/hda7               24G   510M    22G    3% /var
/dev/hdb2               75G     75G     0 100% /

df是以磁盤分區爲單位來查看文件系統。 
/dev/hdb2 75G 75G 0 100% /, 以此爲例。 
表示HD硬盤接口的第二個硬盤(b),第二個分區(2),容量是75G,用了75G,可用是0,所以利用率是100%, 被掛載到根分區目錄上(/) 

     另外簡單的一個辦法就是鼠標右鍵查看磁盤、文件夾屬性,就能瞭解到已用多少,剩餘多少空間。 (轉)node

相關文章
相關標籤/搜索