如何从Linux终端查看可用磁盘空间和磁盘使用情况
df和du命令从Linux,macOS和许多其他类似Unix的操作系统使用的Bash shell中报告磁盘空间使用情况。这些命令使我们可以轻松地确定正在用尽系统存储空间的内容。
查看总,可用和已用磁盘空间
Bash包含两个与磁盘空间有关的有用命令。要找出可用和已使用的磁盘空间,请使用df(磁盘文件系统,有时称为免费磁盘)。要发现正在占用的磁盘空间是什么,请使用" du"(磁盘使用情况)。
输入df
并在Bash终端窗口中按Enter开始。我们会看到很多类似于以下屏幕截图的输出。不带任何选项使用df
将显示所有已挂载文件系统的可用空间和已用空间。乍一看,它看起来似乎很坚不可摧,但是它很容易理解。
df
显示屏的每一行都由六列组成。
Fileystem:此文件系统的名称。
1K块:此文件系统上可用的1K块数。
已使用:此文件系统上已使用的1K块数。
可用:此文件系统上未使用的1K块数。
使用百分比:此文件系统中使用的空间量(以百分比表示)。
File:文件系统名称,如果在命令行上指定。
挂载于:文件系统的挂载点。
我们可以使用-B
(块大小)选项,用更有用的输出替换1K块计数。要使用此选项,请键入" df",一个空格,然后键入-B和K,M,G,T,P,E,Z或者Y列表中的字母。这些字母代表千克,兆, giga,tera,peta,exa,zeta和yotta值(以1024为单位)。
例如,要查看磁盘使用率(以兆字节为单位),请使用以下命令。请注意,B和M之间没有空格。
df -BM
-h(人类可读)选项指示df使用最适用的单位表示每个文件系统的大小。在下一个输出中,请注意,文件系统的大小为千兆字节,兆字节甚至千字节。
df -h
如果我们需要查看以inode数量表示的信息,请使用-i
(inodes)选项。索引节点是Linux文件系统用于描述文件和存储有关它们的元数据的数据结构。在Linux上,索引节点保存每个文件和目录的数据,例如名称,修改日期,硬盘驱动器上的位置等。这对大多数人都不会有用,但是系统管理员有时必须引用此类信息。
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选项,我们可以要求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:文件系统名称(如果在命令行上指定)。
目标:文件系统的安装点。
让我们让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"
输入dfc
并按Enter键与输入long命令具有相同的效果。要使该别名成为永久别名,请将其添加到.bashrc或者.bash_aliases文件中。
我们一直在寻找方法来改进df
的输出,以使其显示的信息符合要求。如果我们想采取相反的方法并让'df'返回所有信息,则可以使用-a(all)选项和--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"(块大小)选项。要使用此选项,请像上面对df所做的那样,键入" du",一个空格,然后键入" -B"以及K,M,G,T,P,E,Z和Y列表中的字母。 。要使用1M块,请使用以下命令:
du -BM
就像df一样,du拥有人类可读的选项-h,它根据每个目录的大小使用一系列块大小。
du -h
-s(摘要)选项给出每个目录的总数,而不显示每个目录中的子目录。以下命令要求du
返回当前工作目录下所有目录(*)的摘要格式(人类可读的数字)信息。
du -h -s *
到目前为止,图片文件夹包含最多的数据。我们可以要求du
对文件夹的大小从最大到最小进行排序。
du -sm Pictures/* | sort -nr
通过完善由df和du返回的信息,可以很容易地找到正在使用的硬盘空间,并发现占用了该空间的空间。然后,我们可以做出明智的决定,以将一些数据移至其他存储设备,向计算机添加另一个硬盘驱动器或者删除冗余数据。
这些命令有很多选项。我们在这里描述了最有用的选项,但是我们可以在Linux手册页中看到df命令和du命令的选项的完整列表。