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

df和du命令从Linux、MacOS和许多其他类Unix操作系统上使用的Bash shell报告磁盘空间使用情况。通过这些命令,您可以轻松识别哪些内容正在耗尽您的系统存储空间。

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

bash包含两个与磁盘空间相关的有用命令。要找出可用的和已使用的磁盘空间,请使用df(磁盘文件系统,有时称为磁盘空闲)。要找出占用已用磁盘空间的原因,可以使用du(磁盘使用率)。

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

df

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

FileSystem:指定此文件系统的名称。 1K块:此文件系统上可用的1K块的数量。 已用:显示此文件系统上已使用的1K块的数量。 可用:表示此文件系统上未使用的1K块的数量。 Use%:n此文件系统中使用的空间量以百分比形式给出。 file:输入文件系统名称(如果在命令行中指定)。 已装载在:位于文件系统的装载点。

您可以使用-B(块大小)选项将1K块计数替换为更有用的输出。要使用此选项,请键入DF、空格,然后键入-B,然后键入K、M、G、T、P、E、Z或Y列表中的字母。这些字母表示1024刻度的倍数中的千、兆、吉、太、Peta、exa、Zeta和Yotta值。

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

df -BM

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

df -h

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

df -i

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

我们可以告诉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为单位表示文件系统的大小。 ised:以inode为单位表示文件系统上使用的空间。 iavail:以inode为单位分配文件系统上的可用空间。 ipcent:以信息节点为单位计算文件系统上已用空间的百分比,以百分比表示。 大小:文件系统的大小,默认以1K块为单位。 已用:表示文件系统上使用的空间,默认情况下以1K块为单位。 可用性:释放文件系统上的可用空间,默认情况下以1K块为单位。 pcent:以inode为单位表示文件系统上已用空间的百分比,默认情况下以1K块为单位。 file:输入文件系统名称(如果在命令行中指定)。 目标:指定文件系统的挂载点。

让我们让df用人类可读的数字报告第一个驱动器上的第一个分区,并使用source、fstype、size、useed、avail和pcent列:

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

长命令非常适合被转换为别名。我们可以通过键入以下命令并按Enter键来创建别名DFC(用于DF自定义):

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

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

我们一直在寻找改进df输出的方法,以使其显示的信息符合您的要求。如果您想采取相反的方法,让df返回所有可能的信息,可以使用-a(All)选项和--output选项,如下所示。-a(All)选项要求df包括每个文件系统,使用--output选项而不使用逗号分隔的列列表会导致df包括每一列。

df -a --output

通过Less命令通过管道传输来自df的输出是查看此命令可能产生的大量输出的一种便捷方式。

df -a --output | less

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

让我们做一些调查,找出这台电脑上有什么东西在占用空间。我们将从我们的一个df命令开始。

df -h -t ext4

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

du

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

du -BM

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

du -h

s(汇总)选项提供每个目录的总数,而不显示每个目录中的子目录。以下命令要求du以人类可读数字的摘要格式返回当前工作目录下所有目录(*)的信息。

du -h -s *

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

du -sm Pictures/* | sort -nr

通过细化df和du返回的信息,很容易找出有多少硬盘空间在使用,并发现是什么占用了这些空间。然后,您可以明智地决定是否将某些数据移动到其他存储、向计算机添加另一个硬盘或删除冗余数据。

这些命令有很多选项。我们在这里描述了最有用的选项,但是您可以在Linux手册页中看到df命令和du命令的完整选项列表。

相关文章