如何使用du命令检查服务器磁盘使用情况

本文将重点介绍如何从命令行检查Linux系统服务器的磁盘使用情况。用于估计磁盘使用量的命令是du命令,即磁盘使用量的简称。du命令是GNU Core Utilities的一部分,在所有Linux和UNIX系统上都可以使用。
du命令可以用于目录或文件。默认情况下,它将检查并输出目录的磁盘使用情况(不是文件大小)。了解两者的区别对于快速获得所需信息非常重要。
磁盘使用量与文件大小
du命令显示的是磁盘使用情况,与文件大小不同,它显示的是文件系统块大小的倍数。它显示的是文件系统块大小的倍数。如果一个特定的文件没有使用完整的块,它可能会更小。另一方面,ls命令显示的是一个文件的表面大小。尽管du命令有一个选项可以显示文件的表观大小(下面会有更多的介绍),但我们建议对文件使用ls命令,对目录使用du命令。
文件的表观大小是指文件中包含了多少数据。面向块的设备(硬盘、SSD等)通过将数据存储在固定大小的块中工作。当一个文件被写入块设备时,可能会有一个块没有被完全填满。因此,磁盘使用量(如du报告的那样)被四舍五入到使用的最高块数。这是一种简化,但块设备和文件系统不在本教程的范围内。
du命令的基本用法
使用du命令而不使用任何选项,将递归检查当前工作目录中的每个目录和子目录。输出会显示每个目录的磁盘使用情况和路径,并在最后显示总的磁盘使用情况。在这个例子中,由于我们没有指定目录,所以在总数后面加了一个点(注意是当前工作目录)。
$ du
du命令选项
du命令提供了很多选项来扩展它的实用性。在这里,我们将通过示例来概述一些最常用的选项。
以人类可读的格式显示尺寸
默认的输出单位对人类不是很友好。通过使用-h选项,我们可以用更友好的格式显示尺寸(如4K, 59M, 3G)
$ du -h
仅获取目录大小摘要
看到一个巨大的文件列表是很少有用的,你可以使用-s(-summarize)选项只显示目录的总大小。
$ du -s
以KB或MB为单位显示目录的大小
你也可以决定用Kb或MB来显示磁盘使用量。
要做到这一点,只需使用-k代表千字节,-m代表兆字节。
示例:
$ du -k Videos/
或者
$ du -m Videos/
显示所有文件和目录
你可能已经注意到,这些命令只显示目录的磁盘使用情况,而不是文件。要显示文件,请使用-a标识,如下所示。
示例:$ du -a Videos/
查找目录总用量
要显示所有磁盘使用量的总和,你可以使用-c(-total)选项。
示例:$ du -c Videos/
这与summaryize (-s)选项非常相似。主要的区别是summaryize只显示总数,而-c (-total)仍然会显示全部输出。
用du命令显示文件大小
要显示文件的表面大小(实际数据大小),可以使用-apparent-size选项。
$du --apparent-size ClusterSSH.mp4
限制目录级别或深度
如果您有很多目录深度(子目录内的子目录),您可能想要限制 du 的深度。使用-max-depth选项,可以指定du在目录树下的深度。
在这个例子中,假设我们有以下目录树。
$ tree ~/Documents/
我们可以指示du实用程序仅深入两个层次,如下所示:
$ du --max-depth=2
使用du命令显示隐藏文件
不幸的是,du没有显示隐藏文件的选项。这是显示隐藏文件的一些解决方法。
$ du -sm .[!.]* *
结合选项和Piping输出
和大多数Linux命令一样,你可以结合选项来进一步指定输出中的所需信息。你也可以将输出结果用管道传送到其他实用程序,以进一步完善输出结果。下面是一些例子。
以人类可读的格式获取汇总的总和。
通过结合这三个选项,我们可以得到非常具体的信息。
$ du -csh ~/Videos/
最大的子目录排序
我们可以通过输出来进行排序,这样按照从大到小的顺序列出使用磁盘空间最多的子目录。
$ du -h -d1 ~/Videos/ | sort -hr
du命令是一个非常成熟的工具,并且有大量的选项来扩展它的实用性。我们在这里介绍了大多数流行的选项,但还有其他一些选项。查看 man 页面,了解所有可用的选项。不过,在阅读完这篇文章之后,你应该可以自如地使用du命令来查找系统的磁盘使用情况。