查看磁盤使用情況 -- df

本文主要介紹Linux下查看磁盤、文件夾空間命令。

首先如果需要查看整個磁盤還剩多少空間,可以使用命令df -h。

1 df -h

如果你並不關心磁盤還剩餘多少空間,只是需要知道當前的文件夾下的磁盤使用情況,可以使用如下命令:

1 du --max-depth=1 -h

上面使用du --max-depth=1 -h命令來查找磁盤的使用情況,默認是當前的路徑。

其中-h參數是爲了方便你讀懂每個文件的大小,如果沒有這個參數顯示的文件大小就沒有k,M,G等。

得到結果中,前面n-1行的是該目錄下每個文件夾的大小。最後一行顯示的是該目錄總的大小。

如果你並不關心該目錄下每個文件的大小,你只想知道其中某一個文件(文件夾)的大小,需要使用下面命令:

1 du -sh

聰明的你一定發現了這裏顯示的大小和上面最後一行的大小是一樣的。

還有另外一個命令,也可以得到得到同樣的效果:

1 du -h --max-depth=0

其實在man手冊裏面已經告訴了我們:--max-depth=0的功能和-s的功能是一樣的。

另外du命令後面可以跟文件路徑,來查看指定路徑的大小:

1 du -sh /root/sw


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

指令 df 可以顯示目前所有檔案系統的最大可用空間及使用情形,請看下列這個例子:
我們加了參數 -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

我們可以看到根目錄的已經用掉的 inode 數量爲 20495,還有 262127 的可用 inode。

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


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


a:顯示全部目錄和其次目錄下的每個檔案所佔的磁盤空間
b:大小用bytes來表示 (默認值爲k bytes)
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

我們目樣使用 -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 等字樣,會造成排序不正確。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章