Linux不像windows系統那樣方便的圖形界面,特別是作為伺服器使用的時候,只有命令行可以使用。 我有個雲伺服器平時用來做一些數據分享用的,最近想看看磁碟和其中文件的占用情況,於是搜索並學習了一些查看磁碟空間信息的命令,命令雖然簡單,但對我自己來說還是有些新的東西值得記錄。 1. df 首先,登 ...
Linux不像windows系統那樣方便的圖形界面,特別是作為伺服器使用的時候,只有命令行可以使用。
我有個雲伺服器平時用來做一些數據分享用的,最近想看看磁碟和其中文件的占用情況,
於是搜索並學習了一些查看磁碟空間信息的命令,命令雖然簡單,但對我自己來說還是有些新的東西值得記錄。
1. df
首先,登錄伺服器用df
命令查看磁碟情況:
/home/projects/databook# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 51420828 14018512 35079240 29% /
輸出包含當前文件系統的磁碟使用情況。
df
命令有個-h
參數,可以更好的展示磁碟情況:
/home/projects/databook# df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 14G 34G 29% /
-h
參數一般是用來顯示幫助信息的,但是對於df
命令,h
表示human
,也就是以人類易讀的方式顯示。
上面的輸出表示這個磁碟的使用量,包括我的虛擬伺服器上的所有內容——可執行文件、庫和支持文件等等。
總容量 50G
,目前只使用了29%
,剩餘的還比較充裕。
2. du
接下來,我想看看databook目錄的文件占用情況。這需要使用 du 命令:
/home/projects/databook# du -hd 1 .
24K ./certs
4.0K ./download
3.2M ./admin-ui
2.9M ./public
108K ./output
181M ./upload
472K ./markdown-files
207M .
同樣,-h
參數表示以人類易讀的方式顯示,-d 1
參數表示 du
只進入一個目錄級別(也就是當前目錄)。
從輸出可以看出,upload
目錄稍微大點,其他目錄都還好。
最後一行 207M
是整個目錄占用磁碟的大小。
我希望按照文件/文件夾 占用磁碟空間大小的順序來顯示,這樣可以快速定位到占用空間大的 文件/文件夾。
3. du | sort
但是,du
命令並沒有按磁碟空間排序的參數,所以嘗試結合 sort
命令來排序。
/home/projects/databook# du -hd 1 . | sort -n
2.9M ./public
3.2M ./admin-ui
4.0K ./download
24K ./certs
108K ./output
181M ./upload
207M .
472K ./markdown-files
sort
命令的-n
參數表示按數字排序,不過文件夾大小不僅有數字,還有單位(比如M
,K
這些)。
所以,這樣排序對我們用處不大。
接著,嘗試所有文件統一用位元組表示,然後在排序:
/home/projects/databook# du -kd 1 . | sort -n
4 ./download
24 ./certs
108 ./output
472 ./markdown-files
2948 ./public
3224 ./admin-ui
184532 ./upload
211112 .
du
命令的-k
參數表示用位元組表示文件/文件夾的大小。
這樣雖然可以正常排序,但是可讀性差,位元組並不是人類易讀的方式,還是MB
,GB
更好理解。
進一步調查,發現sort
命令居然也有-h
參數,也是為了讀取人類易讀格式的值。
/home/projects/databook# du -hd 1 . | sort -hr
207M .
181M ./upload
3.2M ./admin-ui
2.9M ./public
472K ./markdown-files
108K ./output
24K ./certs
4.0K ./download
這樣就滿足了我查詢磁碟空間的要求。sort
命令的-r
參數表示從大到小排序,因為我關註的是大文件,所以想把它們排在前面。
補充:-h
參數是在2009年添加到GNU sort 的。