Linux 磁盘空间分析:掌握 du 命令的完全指南

在 Linux 系统管理中,监控磁盘空间是维护系统健康的核心任务之一。du(Disk Usage)命令是 Linux 管理员和开发者的必备工具,它能精确测量文件和目录所占用的磁盘空间。本指南将深入解析 du 命令的使用技巧,涵盖从基础操作到高级应用的完整知识体系,帮助您优化存储资源并排查磁盘空间问题。


目录#

  1. du 命令概述
  2. 基础语法与常用选项
  3. 实用示例场景
  4. 常见问题排查技巧
  5. 最佳实践总结
  6. 结语
  7. 参考资料

1 du 命令概述#

du 命令通过递归遍历文件系统来计算指定路径的空间使用情况。与 df(显示文件系统整体使用)不同,du 聚焦于具体目录和文件级的空间分配,其核心优势包括:

  • 精确到字节级的空间计算
  • 支持递归目录扫描
  • 多种可读格式输出
  • 灵活的过滤与排序功能

2 基础语法与常用选项#

基本命令结构

du [OPTIONS] [FILE/DIRECTORY]

关键选项详解#

选项说明应用场景
-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
--exclude="PATTERN"排除匹配文件/目录du -h --exclude="*.tmp"
--time显示最后修改时间du -h --time /backups
-b/-k/-m指定单位(Bytes/KB/MB)du -bm iso_file.iso

3 实用示例场景#

3.1 基础空间检查#

# 查看当前目录总大小(简洁模式)
du -sh ./
 
# 分析/var下所有一级子目录大小(深度=1)
du -h --max-depth=1 /var

3.2 文件级空间分析#

# 显示/tmp目录下所有文件大小(包括隐藏文件)
du -ah /tmp
 
# 检查日志目录,排除.gz压缩文件
du -h --exclude="*.gz" /var/log

3.3 高级空间排序#

# 找出/home下最大的5个目录(按MB排序)
du -m /home/* | sort -nr | head -5
 
# 交互式分析目录树(需安装ncdu)
ncdu /opt

3.4 跨文件系统分析#

# 不追踪符号链接指向的实际路径(避免跨FS重复统计)
du -h -P /data/linked_dir
 
# 仅统计当前文件系统的空间(忽略挂载点)
du -x /mnt/multi_fs

4 常见问题排查技巧#

4.1 空间不一致问题#

  • 现象df 显示磁盘已满但 du 统计较小
    原因:文件被删除但进程仍持有句柄(空间未释放)
    解决lsof | grep deleted 找到相关进程并重启

4.2 权限不足导致统计遗漏#

# 使用sudo统计受保护目录(注意权限风险)
sudo du -sh /root/
 
# 跳过无权限目录(避免错误中断)
du -h --no-ignore-fail 2>/dev/null /sys

4.3 大文件快速定位#

# 实时扫描大文件(>100MB)
find / -type f -size +100M -exec du -h {} + 2>/dev/null

5 最佳实践总结#

  1. 定期监控:通过 Cron 任务定时运行 du 记录空间趋势
    # 每周日早上5点记录/home使用情况
    0 5 * * 0 du -sh /home > ~/disk_usage.log
  2. 安全扫描:避免对 /proc, /sys 等虚拟文件系统直接使用 du
  3. 脚本集成:结合 awk 处理自动化阈值告警
    usage=$(du -m /data | awk '{print $1}')
    [ $usage -gt 1024 ] && echo "WARNING: /data >1GB!"
  4. 存储优化:对长期增长的目录(如日志)实施轮转策略(logrotate)
  5. 跨平台一致性:在脚本中明确指定单位(如 -k)避免不同系统格式差异

6 结语#

du 命令作为 Linux 存储管理的基石工具,其强大之处在于精准的空间可视化能力。掌握本文涵盖的技巧后,您将能快速定位磁盘空间瓶颈,制定有效的清理策略,并构建自动化的存储监控方案。持续探索 du 与其他命令(如 find, sort, ncdu)的组合应用,可进一步提升您的系统管理效率。


7 参考资料#

  1. GNU Coreutils 手册: https://www.gnu.org/software/coreutils/manual/
  2. Linux Man Pages: man du / info du
  3. Filesystem Hierarchy Standard (FHS): https://refspecs.linuxfoundation.org/fhs.shtml
  4. Advanced Disk Usage Analyzer: ncdu 官方文档 https://dev.yorhel.nl/ncdu

最后更新: 2023年10月 | 作者: Linux 存储管理专家
版权声明: 本文采用 CC BY-SA 4.0 许可协议