macOS 是谁占用了空间(NCDU)
从 Macbook Pro 2015 换到 Macbook Pro 2019,再到如今的 Macbook M1 Pro,磁盘空间占用越来越大,虽然可以用 du -sh ~/.* ~/* | sort -hr
命令,在一些关键目录排查个大概,无奈目录层级太多,分析时间成本有点高,就找到了这个神器: NCDU(NCurses Disk Usage)
首先,我们来看看如何使用 du
:
- 打开 Terminal(终端)。
- 输入以下命令来查找当前用户主目录下的所有文件和目录的大小,并按大小排序:
1 | du -sh ~/.* ~/* | sort -hr |
这里, du -sh
会显示目录和文件的大小, sort -hr
会按照人类可读的大小进行排序。
如果你想检查整个系统的空间占用情况,请使用以下命令(需要管理员权限):
1 | sudo du -sh /* | sort -hr |
接下来,我们来看看如何使用 ncdu
:
- 如果你还没有安装 Homebrew,请先安装它。在 Terminal 中输入以下命令:
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
- 使用 Homebrew 安装
ncdu
:
1 | brew install ncdu |
- 运行
ncdu
来分析当前用户主目录的磁盘空间占用情况:
1 | ncdu ~ |
如果你想检查整个系统的空间占用情况,请使用以下命令(需要管理员权限):
1 | sudo ncdu / |
ncdu
会以交互式的方式显示目录和文件的大小,可以使用上下箭头键来浏览,并按 Enter
键深入查看目录。要返回上一级目录,请按 Left
键。这样你就可以找到占用空间较大的目录和文件了。
ncdu
本身没有内置缓存功能,每次运行时都会重新扫描目录。但是,你可以将 ncdu
的输出导出到一个文件,然后稍后再查看这个文件,以避免重新扫描。这样做可以在一定程度上加快重复查看磁盘使用情况的速度。请注意,这种方法不能实时反映磁盘使用情况的变化。
以下是将 ncdu
的输出导出到文件以及从文件中读取输出的方法:
- 将
ncdu
的输出导出到一个名为ncdu_output
的文件:
1 | ncdu -o ncdu_output ~ |
这将扫描你的用户主目录并将结果保存到名为 ncdu_output
的文件中。你可以将 ~
替换为任何你想扫描的目录。
- 从导出的文件中读取
ncdu
的输出:
1 | ncdu -f ncdu_output |
这将从 ncdu_output
文件中读取磁盘使用情况数据,并显示在交互式界面中。请注意,这些数据是在导出时生成的,可能不是最新的。
通过这种方式,你可以避免每次都重新扫描目录,从而加快重复查看磁盘使用情况的速度。但是,如果你需要查看实时的磁盘使用情况,你仍然需要重新运行 ncdu
进行扫描。
PS: NCDU 并不只是在 macOS 系统,Linux 系统同样可用.