检查 Linux 中的磁盘使用情况

du 和 ncdu 命令提供了相同信息的两种不同视图,使您可以轻松跟踪计算机上存储的内容。
3 位读者喜欢这篇文章。
Data stack in blue

无论您有多少存储空间,了解您的文件使用了多少磁盘空间都是一个重要的考虑因素。我的笔记本电脑有一个相对较小的 250GB NVME 驱动器。在大多数情况下这没问题,但几年前我开始探索在 Linux 上玩游戏。安装 Steam 和一些游戏会使存储管理变得更加关键。

du 命令

检查磁盘驱动器上剩余存储空间的最简单方法是 du 命令。此命令行实用程序估计文件空间使用情况。像所有 Linux 工具一样,du 非常强大,但了解如何根据您的特定需求使用它会很有帮助。我总是查阅任何实用程序的手册页。这个特定的工具有几个开关,可以为您提供文件存储的最佳快照以及它们在系统上占用的空间。

du 命令有很多选项。以下是一些常用选项

  • -a - 写入所有文件(而不仅仅是目录)的计数
  • --apparent-size - 打印显示大小而不是磁盘使用量
  • -h - 人类可读格式
  • -b - 字节
  • -c - 总计
  • -k - 块大小
  • -m - 以兆字节为单位的大小

请务必查看 du 手册页以获取完整列表。

显示所有文件

您可以选择的第一个选项是 du -a。它提供了系统上所有文件及其存储目录的读数。此命令让我知道我的主目录中存储了 11555168 字节。使用 du -a 可以快速递归地查看我的存储系统。如果我想要一个更有意义的数字,并且我想深入到目录中以查看系统上哪些文件很大,该怎么办?

我认为我的 Downloads 目录中有一些大文件,所以我输入 du -a /home/don/Downloads 以好好看看那个 Downloads 目录。

$ du -a ~/Downloads
4923    ./UNIX_Driver_5-0/UNIX Driver 50
4923    ./UNIX_Driver_5-0
20     ./epel-release-latest-9.noarch.rpm
12    ./rpmfusion-free-release-9.noarch.rpm
2256    ./PZO9297 000 Cover.pdf
8    ./pc.md
2644    ./geckodriver-v0.31.0-linux64.tar.gz
466468  

最左边的数字是以字节为单位的文件大小。我想要一些对我更有帮助的东西,所以我将人类可读格式的开关添加到我的 du -h /home/don/Downloads 命令中。结果是 4.8 G(千兆字节),这对我来说是更有用的数字格式。

$ du -ah ~/Downloads
4.9M    ./UNIX_Driver_5-0/UNIX Driver 50
4.9M    ./UNIX_Driver_5-0
20K    ./epel-release-latest-9.noarch.rpm
12K    ./rpmfusion-free-release-9.noarch.rpm
2.2M    ./PZO9297 000 Cover.pdf
8.0K    ./pc.md
2.6M    ./geckodriver-v0.31.0-linux64.tar.gz
456M    .

与大多数 Linux 命令一样,您可以组合选项。要以人类可读的格式查看您的 Downloads 目录,请使用 du -ah ~/Downloads 命令。

[ 另请阅读: 5 个用于检查 Linux 磁盘可用空间的命令 ]

总计

-c 选项在最后一行提供磁盘使用情况的总计。我可以使用 du -ch /home/don 显示我的主目录中的每个文件和目录。信息量很大,我真正想要的只是结尾处的内容,因此我将磁盘使用情况命令管道传输到 tail。该命令是 du -ch /home/don | tail

pipe the du command output into tail

(Don Watkins,CC BY-SA 4.0)

ncdu 命令

对于对驱动器上存储内容感兴趣的 Linux 用户来说,另一个选择是 ncdu 命令。该命令代表 NCurses Disk Usage。根据您的 Linux 发行版,您可能需要下载并安装它。

在 Linux Mint、Elementary、Pop_OS! 和其他基于 Debian 的发行版上

$ sudo apt install ncdu

在 Fedora、Mageia 和 CentOS 上

$ sudo dnf install ncdu

在 Arch、Manjaro 和类似发行版上

$ sudo pacman -S ncdu

安装完成后,您可以使用 ncdu 分析您的文件系统。以下是在我的主目录中发出 ncdu 后的一个示例输出。ncdu 的手册页指出,“ncdu (NCurses Disk Usage) 是众所周知的 du 的基于 curses 的版本,并提供了一种快速查看哪些目录正在使用您的磁盘空间的方法。”

du command home directory output

(Don Watkins,CC BY-SA 4.0)

我可以使用箭头键上下导航,然后按 Enter 键进入目录。一个有趣的注意事项是,du 报告我的主目录中的总磁盘使用量为 12GB,而 ncdu 报告我的总磁盘使用量为 11GB。您可以在 ncdu 手册页中找到更多信息。

您可以通过将 ncdu 指向特定目录来浏览该目录。例如,ncdu /home/don/Downloads

ncdu command output

(Don Watkins,CC BY-SA 4.0)

? 键显示帮助菜单

ncdu help

(Don Watkins,CC BY-SA 4.0)

总结

duncdu 命令提供了相同信息的两种不同视图,使您可以轻松跟踪计算机上存储的内容。

如果您不熟悉终端,或者只是在寻找另一种查看此类信息的方式,请查看 GNOME 磁盘使用分析器。如果您的系统上还没有它,您可以轻松安装和使用它。检查您的发行版以查找 baobab,如果您想尝试,请安装它。

接下来阅读什么
标签
User profile image.
教育家、企业家、开源倡导者、终身学习者、Python 教师。教育心理学硕士,教育领导学硕士,Linux 系统管理员。

3 条评论

您的第二个示例没有显示正确的命令。它应该是

du -ah ~/Downloads

我从不使用不带 -h 选项的 du。否则,结果太神秘,无法理解。

-h 标志对我来说是新的。我喜欢它。尝试将此别名添加到您的 .bashrc 文件中
alias du='du -h'

我学习了 -s 标志用于摘要而不是 -c 标志。更容易记住。

我使用的一些 du 命令

du -sh *
总结当前目录中目录和文件的磁盘使用情况。

du -sh * | sort -n
对当前目录中目录或文件的大小进行排序。
-n 基于数值而不是字母数字值进行排序。 -rn 反转排序顺序。

du -sh * | sort -n | tail -5
显示当前目录中最大的 5 个目录或文件。
这只是当前目录中顶层文件和目录的摘要。

find . -type f | xargs -d '\n' du -sh * | sort -n | tail -5
查找当前目录中最大的 5 个文件。
用于查找您没有意识到的意外大文件很有用。
xargs 的 -d '\n' 参数告诉 xargs 在换行符处分隔参数。它避免了文件名中带有空格的问题。

du 是我 45 年前学到的最早的 UNIX 命令之一。一个经典但好用的命令。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.