Linux作为服务器系统,使用起来并不像Windows那样直观和便利,因为它主要依赖命令行操作。在使用云服务器时,我需要定期查看磁盘空间的使用情况以及文件所占的空间大小。经过一番搜索和学习,我掌握了几...

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     ./certs4.0K    ./download3.2M    ./admin-ui2.9M    ./public108K    ./output181M    ./upload472K    ./markdown-files207M    .
-h 参数表示以人类易读的方式显示, -d 1 参数表示只进入一个目录级别(也就是当前目录)。

我希望按照文件/文件夹占用磁盘空间大小的顺序来显示,以便可以快速定位到占用空间大的文件/文件夹。

然而, du 命令并没有直接按磁盘空间大小排序的参数,所以尝试结合 sort 命令来排序:

/home/projects/databook# du -hd 1 . | sort -n2.9M    ./public3.2M    ./admin-ui4.0K    ./download24K     ./certs108K    ./output181M    ./upload207M    .472K    ./markdown-files
sort 命令的 -n 参数表示按数字排序,但是文件夹大小不仅有数字,还有单位(如M,K等),因此这样排序对我们并不是十分有效。

接下来,尝试将所有文件统一用字节表示,然后排序:

/home/projects/databook# du -kd 1 . | sort -n4       ./download24      ./certs108     ./output472     ./markdown-files2948    ./public3224    ./admin-ui184532  ./upload211112  .
du 命令的 -k 参数表示用字节表示文件/文件夹的大小。虽然这也是一种排序方式,但可读性较差,而且字节并不是人类易读的方式,所以使用MB,GB等更易理解的单位更好。

进一步调查后发现, sort 命令居然也有 -h 参数,也是为了读取人类易读格式的值:

/home/projects/databook# du -hd 1 . | sort -hr207M    .181M    ./upload3.2M    ./admin-ui2.9M    ./public472K    ./markdown-files108K    ./output24K     ./certs4.0K    ./download
这样满足了我查询磁盘空间的要求。 sort 命令的 -r 参数表示从大到小排序,因为我关注的是大文件,所以想把它们排在前面。

补充信息:在2009年, -h 参数被添加到GNU sort中。