1. 为什么你需要掌握du命令?
当服务器磁盘空间突然告急时,很多运维人员的第一反应往往是"哪个目录占用了这么多空间?"上周我就遇到一个典型案例:某台生产环境服务器突然触发磁盘报警,使用率飙升至95%。如果直接用ls -lh命令查看,根本找不到罪魁祸首——因为大文件可能藏在十几层子目录深处。这时候du命令就派上用场了,它能在3秒内帮你定位到真正的空间占用大户。
du(disk usage的缩写)是Linux系统自带的磁盘分析工具,相比简单的ls命令,它有三大不可替代的优势:
- 递归统计:能穿透任意深度的子目录结构
- 聚合计算:可以按目录层级汇总空间占用
- 智能格式化:支持人类可读的单位转换(KB/MB/GB)
实际工作中,我主要用du解决三类问题:
- 突发性磁盘空间告警时快速定位问题目录
- 定期清理前分析哪些目录值得重点处理
- 编写自动化监控脚本时获取精确的空间数据
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础用法:从入门到熟练
2.1 最常用的参数组合
新手建议从这两个黄金参数开始:
bash复制du -h --max-depth=1 /path/to/directory
这里的-h代表"human-readable",会自动将字节数转换为KB/MB/GB单位。而--max-depth=1控制递归深度,表示只显示指定目录的直接子目录统计。如果不加路径参数,默认分析当前目录。
举个例子,分析根目录的空间占用:
bash复制$ du -h --max-depth=1 /
12K /lost+found
7.8G /home
24G /var
1.2G /usr
48K /root
33G /
从输出可以立即看出/var和/home是主要空间占用者,接下来可以针对性地深入分析这些目录。
2.2 进阶参数详解
除了基础参数,这些选项在实际工作中非常实用:
-s:只显示汇总结果(summarize),适合快速查看总量
bash复制$ du -sh /var/log
3.4G /var/log
-a:显示所有文件而不仅是目录(all),配合-h使用更佳
bash复制$ du
