如何从 Linux 终端查看可用磁盘空间和磁盘使用情况

df 和 du 命令在 Linux、macOS 和许多其他类 Unix 操作系统上使用的 Bash shell 中报告磁盘空间使用情况。 这些命令可让您轻松识别正在使用系统存储的内容。

查看总、可用和已用磁盘空间

Bash 包含两个与磁盘空间相关的有用命令。 要找出可用和已用磁盘空间,请使用 df(磁盘文件系统,有时称为无磁盘空间)。 要发现占用已用磁盘空间的内容,请使用 du(磁盘使用情况)。

键入 df 并在 Bash 终端窗口中按 enter 开始。 你会看到很多类似于下面截图的输出。 使用不带任何选项的 df 将显示所有已挂载文件系统的可用空间和已用空间。 乍一看,它可能看起来难以理解,但它很容易理解。

df

显示的每一行由六列组成。

Fileystem:此文件系统的名称。
1K-Blocks:此文件系统上可用的 1K 块数。
已使用:此文件系统上已使用的 1K 块数。
可用:此文件系统上未使用的 1K 块的数量。
Use%:此文件系统中使用的空间量,以百分比形式给出。
文件:文件系统名称,如果在命令行中指定。
Mounted on:文件系统的挂载点。

您可以使用 -B(块大小)选项将 1K 块计数替换为更有用的输出。 要使用此选项,请键入 df、一个空格,然后键入 -B 和 K、M、G、T、P、E、Z 或 Y 列表中的一个字母。这些字母代表千、兆、千兆、兆、 peta、exa、zeta 和 yotta 值来自 1024 比例的倍数。

例如,要查看以 MB 为单位的磁盘使用情况,您可以使用以下命令。 注意 B 和 M 之间没有空格。

df -BM

-h(人类可读)选项指示 df 对每个文件系统的大小使用最适用的单位。 在下一个输出中,请注意有千兆字节、兆字节甚至千字节大小的文件系统。

df -h

如果您需要查看以 inode 数量表示的信息,请使用 -i (inode) 选项。 inode 是 Linux 文件系统用来描述文件和存储有关文件的元数据的数据结构。 在 Linux 上,inode 保存每个文件和目录的名称、修改日期、在硬盘驱动器上的位置等数据。 这对大多数人没有用处,但系统管理员有时必须参考此类信息。

df -i

除非被告知不要,否则 df 将提供有关所有已挂载文件系统的信息。 这可能会导致显示杂乱无章的大量输出。 例如,列表中的 /dev/loop 条目是伪文件系统,允许文件像分区一样被挂载。 如果您使用安装应用程序的新 Ubuntu snap 方法,您可以获得很多。 这些可用空间将始终为 0,因为它们不是真正的文件系统,因此我们不需要查看它们。

  如何在 Linux 上玩 Dungeon Defenders

我们可以告诉 df 排除特定类型的文件系统。 为此,我们需要知道我们希望排除的文件系统类型。 -T(打印类型)选项将为我们提供该信息。 它指示 df 在输出中包含文件系统的类型。

df -T

/dev/loop 条目都是 squashfs 文件系统。 我们可以使用以下命令排除它们:

df -x squashfs

这为我们提供了更易于管理的输出。 要获得总数,我们可以添加 –total 选项。

df -x squashfs --total

我们可以通过使用 -t (type) 选项要求 df 仅包含特定类型的文件系统。

df -t ext4

如果我们想查看一组文件系统的大小,我们可以按名称指定它们。 Linux 中的驱动器名称是按字母顺序排列的。 第一个驱动器称为 /dev/sda ,第二个驱动器是 /dev/sdb ,依此类推。 分区编号。 所以 /dev/sda1 是驱动器 /dev/sda 上的第一个分区。 我们告诉 df 通过将文件系统的名称作为命令参数传递来返回有关特定文件系统的信息。 我们来看看第一个硬盘的第一个分区。

df /dev/sda1

请注意,您可以在文件系统名称中使用通配符,其中 * 表示任何字符集,而 ? 代表任何单个字符。 因此,要查看第一个驱动器上的所有分区,我们可以使用:

df /dev/sda*

我们可以要求 df 报告一组命名文件系统。 他我们正在请求 /dev 和 /run 文件系统的大小,我们想要一个总数。

df -h --total /dev /run

为了进一步自定义显示,我们可以告诉 df 要包含哪些列。 为此,请使用 –output 选项并提供所需列名的逗号分隔列表。 确保不在逗号分隔列表中包含任何空格。

来源:文件系统的名称。
fstype:文件系统的类型。
itotal:inode 中文件系统的大小。
iused:inode 中文件系统上使用的空间。
iavail:inode 中文件系统上的可用空间。
ipcent:inode 中文件系统上已用空间的百分比,以百分比表示。
size:文件系统的大小,默认为 1K 块。
used:文件系统上使用的空间,默认为 1K 块。
avail:文件系统上的可用空间,默认为 1K 块。
pcent:inode 中文件系统上已用空间的百分比,默认以 1K 块为单位。
file:文件系统名称(如果在命令行上指定)。
target:文件系统的挂载点。

  如何在 Linux 中使用 Ventoy 安装和创建可启动 USB

让 df 报告第一个驱动器上的第一个分区,带有人类可读的数字,以及列 source、fstype、size、used、avail 和 pcent:

df -h /dev/sda1 --output=source,fstype,size,used,avail,pcent

长命令是转换为别名的完美候选者。 我们可以通过键入以下内容并按 Enter 来创建别名 dfc(用于 df custom ):

alias dfc="df -h /dev/sda1 --output=source,fstype,size,used,avail,pcent"

使用命令 alias dfc= 创建别名

键入 dfc 并按 enter 将与键入 long 命令具有相同的效果。 要使此别名永久化,请将其添加到您的 .bashrc 或 .bash_aliases 文件中。

我们一直在寻找优化 df 输出的方法,以使其显示的信息符合您的要求。 如果您想采用相反的方法并让 df 返回所有可能的信息,则可以使用 -a(全部)选项和 –output 选项,如下所示。 -a (all) 选项要求 df 包含每个文件系统,并且使用不带逗号分隔的列列表的 –output 选项会导致 df 包含每一列。

df -a --output

通过 less 命令将 df 的输出管道化是一种方便的方法来查看它可以产生的大量输出。

df -a --output | less

找出占用已用磁盘空间的原因

让我们进行一些调查,找出这台 PC 上占用空间的原因。 我们将从 df 命令之一开始。

df -h -t ext4

第一个硬盘的第一个分区上使用了 78% 的磁盘空间。 我们可以使用 du 命令来显示哪些文件夹保存的数据最多。 发出不带选项的 du 命令将显示发出 du 命令的目录下的所有目录和子目录的列表。如果从主文件夹执行此操作,则列表将很长。

du

输出格式非常简单。 每行显示目录的大小和名称。 默认情况下,大小以 1K 块显示。 要强制 du 使用不同的块大小,请使用 -B(块大小)选项。 要使用此选项,请键入 du、一个空格,然后是 -B 和 K、M、G、T、P、E、Z 和 Y 列表中的一个字母,就像我们在上面对 df 所做的那样。 要使用 1M 块,请使用以下命令:

du -BM

就像 df 一样,du 有一个人类可读的选项 -h,它根据每个目录的大小使用一系列块大小。

du -h

-s (summarize) 选项给出每个目录的总数,而不显示每个目录中的子目录。 以下命令要求 du 以摘要格式以人类可读的数字返回所有目录的信息

du -h -s *

在当前工作目录下。

du -sm Pictures/* | sort -nr

到目前为止,图片文件夹包含最多的数据。 我们可以要求 du 按大小从大到小对文件夹进行排序。

  如何在 Linux 上玩 Valheim

通过细化 df 和 du 返回的信息,很容易找出正在使用的硬盘空间,并找出占用该空间的内容。 然后,您可以做出明智的决定,将一些数据移动到其他存储设备、将另一个硬盘驱动器添加到您的计算机或删除冗余数据。 这些命令有很多选项。 我们在此处描述了最有用的选项,但您可以查看完整的选项列表 df 命令 并且对于 杜命令

在 Linux 手册页中。