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 的。