1. Linux磁盘空间统计的奥秘:深入理解du命令
作为一名Linux系统管理员,我每天都要和磁盘空间打交道。记得刚入行时,有次服务器报警磁盘空间不足,我急匆匆地用du -sh /var/log/*检查日志目录大小,结果显示只有几十GB,但实际使用却接近90%。这个谜团困扰了我很久,直到后来才发现是隐藏文件在"作怪"。今天,我们就来彻底解析这个看似简单却暗藏玄机的磁盘统计工具。
du(Disk Usage)是Linux系统中最基础也最实用的磁盘空间统计工具。它通过递归遍历目录来计算文件占用空间,但很多人(包括曾经的我)都低估了它的复杂性。特别是在处理隐藏文件、符号链接和不同文件系统时,du的表现往往出人意料。本文将结合我多年运维经验,带你深入理解du的工作原理、常见误区和实用技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. du命令核心用法解析
2.1 基础语法与常用选项
du的基本语法非常简单:
bash复制du [选项] [文件或目录]
但它的选项组合却能产生丰富的变化。以下是6个最常用的选项:
-
-s/--summarize:只显示总计大小
- 适用场景:快速查看目录整体大小
- 示例:
du -sh /home→ 显示/home目录总大小
-
-h/--human-readable:人性化显示单位
- 自动转换KB/MB/GB
- 示例:
du -h file.txt→ 显示"4.0K"而非"4096"
-
-a/--all:显示所有文件而不仅是目录
- 适用场景:找出大文件
- 示例:
du -ah /var | sort -rh | head -10→ 列出/var下前10大文件
-
--max-depth=N:控制遍历深度
- 示例:
du -h --max-depth=1 /usr→ 只显示/usr下一级子目录大小
- 示例:
-
--exclude=PATTERN:排除特定模式
- 示例:
du -h --exclude='*.log' /var→ 统计时排除.log文件
- 示例:
-
-c/--total:显示总计
- 适用场景:统计多个目录总和
- 示例:`du -sch /home /var /us
