上一篇 下一篇 分享链接 返回 返回顶部

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

发布人:Minchunlin 发布时间:2021-03-01 09:36 阅读量:2522

本文将重点介绍如何从命令行检查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命令来查找系统的磁盘使用情况。

目录结构
全文