我手头有一台云服务器,平日里主要用来做一些数据分享相关的工作,最近想要查看一下磁盘以及其中各文件的占用状况,于是便搜索并学习了一批用于查看磁盘空间信息的命令,这些命令本身虽然操作简单,但对我个人而言仍有一些值得记录的新收获。
- 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%,剩余空间相对而言还比较充裕宽松。
- 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则代表整个目录所占用的磁盘总容量。
我希望能够依照文件/文件夹占用磁盘空间大小的顺序来加以展示,这样便能迅速定位到那些占用空间较大的文件或文件夹。
- 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参数表示按照从大到小的顺序进行排列,由于我更关注体积较大的文件情况,因此希望将这些大文件优先排列在前面展示。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/3149.html
