引言
在 Linux 和类 Unix 系统中,df
(disk free) 命令是查看文件系统磁盘空间使用情况的标准工具。然而,其默认输出格式对于许多用户来说不够直观,信息密度低,可读性较差。为了解决这些痛点,开源社区涌现出许多替代方案,Duf (Disk Usage/Free) 就是其中一款备受好评的现代化命令行工具。它旨在提供一个更美观、更易于理解的磁盘使用情况概览。
Duf 由 muesli 开发,使用 Go 语言编写,这意味着它通常作为一个独立的二进制文件分发,没有复杂的运行时依赖,并且具有良好的跨平台特性。
主要特性
Duf 的核心优势在于其用户友好的设计和丰富的功能:
- 清晰易读的输出: 这是 Duf 最显著的特点。它以彩色表格的形式展示磁盘信息,自动使用合适的单位 (KiB, MiB, GiB),并能显示使用率条,使得磁盘空间状况一目了然。相比
df
密集的文本输出,Duf 的界面更加现代和直观。 - 跨平台支持: Duf 可在 Linux、macOS、Windows、BSD 等多种操作系统上运行,为不同平台的用户提供了一致的体验。
- 灵活的过滤与排序:
- 过滤: 可以轻松地只显示特定类型的文件系统(如本地、网络、特殊文件系统),或根据设备名称、挂载点、文件系统类型进行过滤 (
--only-local
,--only-fs ext4,xfs
等)。 - 排序: 支持按大小、使用率、挂载点、inode 使用情况等多个字段对输出结果进行排序 (
--sort size
),方便快速定位关键分区。
- 过滤: 可以轻松地只显示特定类型的文件系统(如本地、网络、特殊文件系统),或根据设备名称、挂载点、文件系统类型进行过滤 (
- JSON 输出: Duf 支持将结果输出为 JSON 格式 (
--json
),这对于脚本自动化处理和与其他工具(如jq
)集成非常有用。 - 高度可定制:
- 输出字段: 用户可以通过
--output
参数或DUF_OUTPUT
环境变量精确控制需要显示的列(如mountpoint,size,used,avail,usage,inodes,inodes_usage,type,filesystem
)。 - 颜色主题: 支持浅色和深色主题,并允许通过配置文件自定义颜色方案。
- 配置文件: 可以通过
$HOME/.config/duf/dufrc
(或$XDG_CONFIG_HOME/duf/dufrc
) 设置默认参数、别名和颜色主题。
- 输出字段: 用户可以通过
安装与快速入门
Duf 的安装通常非常简单。
- 通过包管理器 (推荐):
- Debian/Ubuntu:
sudo apt install duf
- Fedora:
sudo dnf install duf
- Arch Linux:
sudo pacman -S duf
- macOS (Homebrew):
brew install duf
- Windows (Scoop/Chocolatey):
scoop install duf
或choco install duf
- Debian/Ubuntu:
- 从 Releases 下载: 访问 GitHub Releases 页面 下载预编译的二进制文件。
- 从源码编译: 如果你安装了 Go 环境,可以使用
go install github.com/muesli/duf@latest
。
安装完成后,只需在终端中运行 duf
即可看到效果:
duf
你会看到一个比 df
清晰得多的磁盘使用情况列表。
进阶使用与技巧
除了基本用法,Duf 还提供了一些高级功能:
- 仅显示特定文件系统:
bash
# 只显示本地 ext4 和 xfs 文件系统
duf --only-local --only-fs ext4,xfs - 按可用空间排序:
bash
# 按可用空间从小到大排序
duf --sort avail - 自定义输出列:
bash
# 只显示挂载点、大小和使用率
duf --output mountpoint,size,usage - 结合
jq
处理 JSON 输出:
bash
# 获取根目录的使用率
duf --json | jq '.[] | select(.mount_point == "/") | .usage' - 查看 Inode 使用情况:
bash
# 显示 inode 相关信息并按 inode 使用率排序
duf --output mountpoint,inodes,inodes_used,inodes_avail,inodes_usage --sort inodes_usage - 使用配置文件: 创建
~/.config/duf/dufrc
文件,例如设置默认只显示本地设备并按大小排序:
only-local = true
sort = size
使用场景与案例
Duf 适用于多种场景:
- 日常系统监控: 替代
df
进行快速、直观的磁盘空间检查。 - 自动化脚本: 利用其清晰的输出或 JSON 格式,编写脚本来监控磁盘使用率。例如,结合
cron
和duf --json
,当某个分区的空间低于阈值时发送警报。 - 服务器管理: 快速了解服务器上所有挂载点(包括 NFS、SMB 等网络挂载)的空间状况。
- 容器环境: 在容器内运行
duf
,方便地查看容器的文件系统使用情况。 - 资源受限设备: 用户反馈表明 Duf 在 Raspberry Pi 等设备上资源占用较低,适合这些环境。
用户评价与性能考量
社区普遍对 Duf 的易用性和视觉效果给予积极评价,认为它显著改善了查看磁盘信息的体验。颜色编码和清晰的表格是其广受欢迎的主要原因。
然而,也有用户反馈在处理大量挂载点(尤其是网络文件系统如 NFS)时,Duf 的启动速度可能会比原生 df
慢。此外,在某些特定文件系统上,有报告称其 CPU 占用可能较高。需要注意的是,Duf 的主要设计目标是提供更好的用户体验而非极致性能。对于大多数日常使用场景,其性能是完全可以接受的。官方目前缺乏详细的基准测试数据,用户可以在自己的环境中进行评估。
与类似工具对比
市面上有多种磁盘空间查看工具,各有侧重:
df
(原生):- 优点: 系统自带,无需安装,轻量。
- 缺点: 输出不直观,可读性差,功能相对基础。
pydf
:- 优点: 类似 Duf,提供彩色易读输出。
- 缺点: 基于 Python,需要 Python 环境。
ncdu
(NCurses Disk Usage):- 优点: 交互式界面,可以深入浏览目录结构,按大小排序文件/目录,快速定位大文件/目录。
- 缺点: 主要用于分析目录内容占用,而非文件系统概览。
dust
:- 优点: 类似
ncdu
的交互式目录分析工具,通常更快(Rust 编写,并行处理),界面更现代。 - 缺点: 同
ncdu
,侧重目录分析。
- 优点: 类似
Duf
:- 优点:
df
的现代化替代品,输出清晰易读,跨平台,JSON 支持,可定制性好,无运行时依赖 (Go)。 - 缺点: 主要用于文件系统概览,非交互式目录分析;处理大量挂载时可能比
df
稍慢。
- 优点:
选择建议:
- 如果只需要快速、直观地查看文件系统整体使用情况,
Duf
是df
的优秀替代品。 - 如果需要深入分析哪个目录或文件占用空间最多,应选择
ncdu
或dust
。
总结
Duf 成功地解决了传统 df
命令可读性差的问题,通过现代化的界面、丰富的功能和良好的跨平台支持,为用户提供了一种更愉悦、更高效的方式来查看磁盘使用情况。虽然在某些极端情况下的性能可能不是最优,但其易用性和清晰度使其成为系统管理员、开发者和普通用户的有力工具。
如果你厌倦了 df
的原始输出,不妨尝试一下 Duf,体验更直观的磁盘空间管理。
项目地址: https://github.com/muesli/duf
评论(0)