du(Disk Usage)是Linux/Unix系统中用于分析文件或目录磁盘占用空间的核心命令。本文将通过结构化数据、参数详解及实际案例,系统化解析其功能与应用场景。

■ 一、du命令的核心功能
du通过递归统计文件系统中目录层级的存储数据,帮助用户识别磁盘空间消耗来源。与df(显示磁盘分区总量)不同,du聚焦于目录层级的细粒度分析。
■ 二、关键参数与使用示例
| 参数 | 说明 | 使用示例 |
|---|---|---|
| -h | 人类可读格式(自动转换为KB/MB/GB) | du -h /var/log |
| -s | 仅显示总用量(不递归子目录) | du -sh /home |
| -c | 显示总计数值 | du -ch *.log |
| --max-depth=N | 限制目录递归深度 | du -h --max-depth=1 /usr |
| -a | 显示所有文件(包括非目录) | du -ah /tmp |
■ 三、经典实用场景示例
1. 定位大文件目录:
du -sh /* | sort -rh | head -5
输出根目录下空间占用最大的前5个子目录。
2. 排除特定文件类型:
du -h --exclude="*.log" /var
统计/var目录大小时忽略所有.log文件。
■ 四、与df命令的协同工作
| 命令 | 核心差异 | 典型输出 |
|---|---|---|
| du | 统计文件实际占用块数*块大小 | /home 25G |
| df | 显示文件系统挂载点总量 | /dev/sda1 50G 35G 15G 70% / |
■ 五、高级数据处理技巧
结合find实现精准扫描:
find /var -type f -size +100M -exec du -h {} + | sort -rh
定位/var目录下所有超过100MB的文件并排序。
■ 六、参数行为对照表
| 命令组合 | 输出差异 |
|---|---|
| du -sh * | 显示当前目录各子项的独立大小 |
| du -sh . | 仅显示当前目录总用量 |
| du -h --apparent-size | 显示文件表面大小(非实际占用块) |
■ 七、特殊场景注意事项
1. 稀件处理:du默认统计实际分配的磁盘块,ls显示的表观大小可能更大。
2. 挂载点问题:统计含挂载点的目录时,使用--one-file-system可避免跨设备统计。
通过du命令的灵活组合,系统管理员可快速构建磁盘空间监控体系,这是Linux存储管理的核心技能之一。建议定期使用cron任务执行自动化扫描,例如每日生成/var空间分析报告。