ncdu [选项] [目录]
| 选项 | 说明 |
|---|---|
| -x | 不跨越文件系统边界(只统计当前文件系统) |
| -q | 安静模式,减少进度信息输出 |
| -0 | 静默模式,不显示任何进度信息 |
| -1 | 单行模式,类似du -s * | sort -n |
| -2 | 两列模式,显示名称和大小 |
| -o 文件 | 将扫描结果导出到指定文件 |
| -f 文件 | 从文件导入扫描结果 |
| --exclude 模式 | 排除匹配模式的文件/目录 |
| --follow-symlinks | 跟随符号链接(默认不跟随) |
| --exclude-kernfs | 排除内核文件系统(如/proc, /sys) |
| -v | 显示版本信息 |
| -h | 显示帮助信息 |
# 扫描当前目录
ncdu
# 扫描指定目录
ncdu /home
# 不跨越文件系统边界
ncdu -x /
图:ncdu交互式界面示例
# 导出扫描结果到文件
ncdu -o scan_result.json /home
# 从文件导入并浏览结果
ncdu -f scan_result.json
# 导出结果并压缩
ncdu -o - /home | gzip > scan_result.json.gz
ncdu -f <(gzip -d -c scan_result.json.gz)
说明:导出的JSON文件可以用于后续分析或分享给他人查看。
# 排除node_modules目录(前端开发常见)
ncdu --exclude node_modules /home/user/projects
# 排除多个模式
ncdu --exclude '*.log' --exclude '*.tmp' /var
# 排除以点开头的隐藏文件
ncdu --exclude '.*' /home
# 使用通配符排除
ncdu --exclude '*/cache/*' /
# 单行模式,类似du但更强大
ncdu -1 /home | head -20
# 两列模式
ncdu -2 /var/log
# 在脚本中使用,找出最大的10个目录
ncdu -0 -o /tmp/scan.out /
ncdu -f /tmp/scan.out -q | head -10
# 安静模式扫描
ncdu -q / > /tmp/disk_usage.txt
# 通过SSH扫描远程服务器
ssh user@remote-server "ncdu -o - /" > remote_scan.json
ncdu -f remote_scan.json
# 直接运行(需要远程服务器安装ncdu)
ssh -t user@remote-server ncdu /
# 实时监控远程磁盘使用
ssh user@remote-server "watch -n 60 'ncdu -1 / | head -20'"
# 1. 扫描/var目录(通常存放日志)
sudo ncdu /var
# 2. 进入/var/log查看日志文件
# 3. 使用'd'键删除旧的日志文件
# 4. 检查/var/tmp和/var/cache
sudo ncdu /var/tmp
sudo ncdu /var/cache
#!/bin/bash
# 定期磁盘清理脚本
# 扫描系统目录
echo "扫描 /var 目录..."
sudo ncdu -1 /var | head -10 > /var/log/disk_usage_$(date +%Y%m%d).log
# 自动清理7天前的日志
find /var/log -name "*.log" -mtime +7 -delete
find /tmp -type f -mtime +7 -delete
echo "清理完成: $(date)"
# 检查所有用户的主目录
for user in /home/*; do
if [ -d "$user" ]; then
echo "=== $(basename "$user") ==="
ncdu -1 "$user" | head -5
fi
done
# 找出占用最多的用户
sudo ncdu -1 /home | sort -n | tail -10
# 分析项目依赖占用
ncdu --exclude '.git' --exclude 'node_modules' /home/user/projects
# 检查node_modules大小
ncdu node_modules
# 找出项目中最大的文件
find /home/user/projects -type f -exec du -h {} + | sort -rh | head -20
node_modules和.next等构建目录du命令更直观易用A: 主要区别:
| 功能 | ncdu | du |
|---|---|---|
| 界面 | 交互式ncurses界面 | 命令行输出 |
| 排序 | 自动按大小排序 | 需要额外排序命令 |
| 百分比 | 显示占用百分比 | 不显示百分比 |
| 导航 | 可交互浏览目录树 | 静态输出 |
| 导出 | 支持JSON导出 | 纯文本输出 |
# Ubuntu/Debian
sudo apt install ncdu
# RHEL/CentOS
sudo yum install ncdu
# Fedora
sudo dnf install ncdu
# macOS (Homebrew)
brew install ncdu
# 从源码编译
wget https://dev.yorhel.nl/download/ncdu-1.17.tar.gz
tar xzf ncdu-1.17.tar.gz
cd ncdu-1.17
./configure
make
sudo make install
A: 使用t键切换是否统计硬链接。当文件被删除但仍被进程占用时,在lsof中显示为deleted状态。
A: 可以。使用c键切换显示项目数量,包括文件和目录的数量统计。
| 工具 | 特点 | 最佳用途 |
|---|---|---|
| ncdu | 交互式、快速、终端界面 | 日常磁盘空间分析和管理 |
du |
基础、普遍可用、脚本友好 | 脚本中的磁盘使用统计 |
baobab |
图形化、可视化饼图 | 桌面环境的磁盘分析 |
filelight |
KDE的图形化工具 | KDE环境的磁盘可视化 |
gdmap |
图形化、可缩放 | 需要图形界面的详细分析 |