Linux作为服务器系统,使用起来并不像Windows那样直观和便利,因为它主要依赖命令行操作。在使用云服务器时,我需要定期查看磁盘空间的使用情况以及文件所占的空间大小。经过一番搜索和学习,我掌握了几个在Linux命令行下查看磁盘信息的命令,尽管它们十分简单,但对我而言仍有些新内容值得记录。
我的云服务器通常用于数据分享,最近我想要了解磁盘和其中文件的占用情况,于是搜索并学习了一些查看磁盘空间信息的命令,命令虽然简单,但对我自己来说还是有些新的东西值得记录。
首先,登录服务器使用
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
参数表示以人类易读的方式显示磁盘容量情况。上面的输出表示磁盘的总容量为50G,目前已使用了14G,剩余34G。
使用
du
命令查看指定目录下文件的占用情况,例如我想查看databook目录的文件占用情况,可以使用以下命令:
/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
命令并没有直接按磁盘空间大小排序的参数,所以尝试结合
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
参数表示从大到小排序,因为我关注的是大文件,所以想把它们排在前面。
补充信息:在2009年,
-h
参数被添加到GNU sort中。