Linux 命令行工具 ncdu 磁盘占用分析利器

发布于 2023-01-17
我们在使用 Linux 时经常会遇到这种场景,磁盘满了,但不知道哪里占用的。传统方式为:

前言

我们在使用 Linux 时经常会遇到这种场景,磁盘满了,但不知道哪里占用的。传统方式为:

  1. 使用 df -h 查看各个磁盘占用空间
  2. 使用 du -h --max-depth=1 | sort -hr 查看根目录或者在你认为可能磁盘占用较大的空间执行,返回了该文件夹中每个文件及文件夹的占用大小。
  3. 然后根据第二步返回的结果,再去子目录执行,直到找到占用较大的文件。
  4. 对占用较大的文件使用 rm xxx 删除,如果是文件夹,还需要 rm -rf folder ,这个命令是很危险的,万一输错就麻烦了。

现在使用 ncdu 的话,只需要执行一次就可以,无需重复上述的 2 和 3 步骤,且删除文件也很方便,不会出错。

安装

普通安装

常见操作系统的包管理中已经包含了 btop 工具,直接安装即可

# ubuntu
sudo apt install ncdu
# centos
sudo yum install ncdu

不过安装后可能版本不是最新的,可以下载最新二进制文件安装。

二进制安装

这里使用的版本是 2.2.1,这是我写这篇文章时的最高版本,如果你想要更新的版本,或者 CPU 架构不同,可去 https://dev.yorhel.nl/ncdu 查看项目主页介绍。

wget --no-check-certificate https://dev.yorhel.nl/download/ncdu-2.2.1-linux-x86_64.tar.gz
tar -zxvf ncdu-2.2.1-linux-x86_64.tar.gz

使用

使用起来就很简单了。

# 统计当前所在目录及子目录的文件占用情况
ncdu

# 统计指定的 /data 目录
ncdu /data

# 将 /data 目录的情况输出到 ~/ncdu.txt
ncdu /data -o ~/ncdu.txt

# 加载本地根据,而不是进行实时统计
ncdu -f ~/ncdu.txt 

如同下图所示,他还支持 vim 快捷键,或者大家习惯性的 ↑ ↓←→回车键来切换目录,还支持按文件名、文件大小、子文件数量排序,按 d 删除文件(会二次确认

1674008750697.png