Linux du 命令

Linux du 命令(2025年中文讲解)

du 命令(disk usage)是 Linux 系统中的一个实用工具,用于查看文件或目录的磁盘使用量,广泛应用于系统管理、磁盘空间分析和脚本开发。相比其他工具(如 df),du 更专注于具体文件或目录的详细空间占用,适合排查磁盘满或优化存储。2025年,Linux 生态(如 Ubuntu、CentOS、Debian)中 du 命令保持稳定,结合现代工具(如 ncdu)进一步提升了使用体验。本教程详细讲解 du 命令的语法、选项和实践,基于官方 man 页面、CSDN 和 Linux 社区,适合初学者和运维开发者。建议在 Linux 终端练习。


一、du 命令概览(必知)

  • 功能:统计文件或目录的磁盘使用量,默认单位为 KB。
  • 核心用途
  • 查看目录总大小。
  • 分析具体文件或子目录的占用。
  • 排查磁盘空间问题。
  • 特点
  • 灵活:支持递归统计、单位转换和过滤。
  • 输出可控:可指定深度、排序或排除文件。
  • 跨平台:Linux、macOS 和类 Unix 系统通用。
  • 2025年趋势
  • 结合 ncdu(交互式工具)分析大目录更流行。
  • DevOps 脚本中,du 用于自动化监控磁盘使用。
  • 容器化环境(如 Docker、Kubernetes)中,du 帮助分析容器镜像大小。

二、核心语法与用法(必会)

基本语法

du [选项] [文件或目录]

以下按常见选项和场景讲解,包含示例,直接在终端可运行。

1. 基本用法
  • 查看目录大小
  du /home/user

输出(示例,单位 KB):

  4096    /home/user/docs
  8192    /home/user/downloads
  12288   /home/user
  • 显示每个子目录和总大小,默认单位 KB。
  • 查看单个文件
  du /home/user/file.txt

输出

  4       /home/user/file.txt
2. 常用选项
  • -h(human-readable):以人类可读单位显示(KB、MB、GB)。
  du -h /home/user

输出

  4.0M    /home/user/docs
  8.0M    /home/user/downloads
  12M     /home/user
  • -s(summarize):仅显示总大小。
  du -sh /home/user

输出

  12M     /home/user
  • -a(all):包含文件和目录。
  du -ah /home/user

输出

  4.0K    /home/user/file.txt
  4.0M    /home/user/docs
  8.0M    /home/user/downloads
  12M     /home/user
  • -c(total):显示总计。
  du -ch /home/user/docs /home/user/downloads

输出

  4.0M    /home/user/docs
  8.0M    /home/user/downloads
  12M     total
  • --max-depth=N:限制递归深度。
  du -h --max-depth=1 /home/user

输出

  4.0M    /home/user/docs
  8.0M    /home/user/downloads
  12M     /home/user
  • --exclude=模式:排除特定文件或目录。
  du -h --exclude="*.txt" /home/user

输出:排除 .txt 文件,只显示目录大小。

3. 高级用法
  • 排序输出:结合 sort 按大小排序。
  du -ah /home/user | sort -hr

输出(从大到小):

  12M     /home/user
  8.0M    /home/user/downloads
  4.0M    /home/user/docs
  4.0K    /home/user/file.txt
  • 指定单位
  • -k(KB)、-m(MB)、-g(GB)。
  du -sm /home/user

输出

  12      /home/user
  • 排除隐藏文件
  du -ah --exclude=".*" /home/user

输出:排除以 . 开头的隐藏文件。

4. 结合其他工具
  • find 结合:查找大文件。
  find /home/user -type f -exec du -h {} + | sort -hr | head -n 5

输出:列出前 5 个最大文件。

  • ncdu 结合:交互式分析。
  ncdu /home/user

说明ncdudu 的图形化替代,适合快速浏览。


三、实践示例(综合应用)

  1. 检查用户目录空间
   du -sh /home/user/*

输出

   4.0M    /home/user/docs
   8.0M    /home/user/downloads
   4.0K    /home/user/file.txt

功能:列出 /home/user 下所有一级目录和文件的大小。

  1. 监控脚本(DevOps 示例)
#!/bin/bash
THRESHOLD=80
SIZE=$(du -sm /var/log | awk '{print $1}')
if [ $SIZE -gt $THRESHOLD ]; then
    echo "Warning: /var/log size is ${SIZE}MB, exceeds ${THRESHOLD}MB!"
else
    echo "/var/log size is ${SIZE}MB"
fi


功能:监控 /var/log 目录大小,超过 80MB 发出警告。

  1. Docker 容器分析
   du -sh /var/lib/docker

输出(示例):

   1.2G    /var/lib/docker

功能:检查 Docker 镜像和容器占用的磁盘空间。


四、注意事项与最佳实践

  1. 单位选择
  • 优先用 -h 查看人类可读格式。
  • -k-m 确保脚本中单位一致。
  1. 性能优化
  • 大目录(如 /)用 --max-depth 限制深度,避免长时间运行。
  • 排除无关文件(如 --exclude="/proc"),提高效率。
  1. 权限问题
  • 访问受限目录需 sudo
    bash sudo du -sh /root
  1. df 区别
  • du:统计具体文件/目录大小。
  • df:显示整个文件系统的使用情况。
  1. 2025年趋势
  • 交互工具ncdudu 更直观,适合快速分析。
  • DevOpsdu 结合 Prometheus/Grafana 监控磁盘。
  • KMP 环境:在 Android/Linux 容器中,du 分析 WebView 缓存:
    bash du -sh /data/data/com.example/cache

五、学习建议

  • 练习:在 Linux 终端实践 du -hdu -sh 和排序,分析 /home/var
  • 资源
  • 官方 man 页面:man du
  • CSDN:搜索“Linux du 命令”。
  • Linux 社区:https://linux.die.net/man/1/du
  • 时间:1-2 小时掌握基本用法,1 天熟悉高级选项。
  • 实践:写脚本监控磁盘,或用 ncdu 分析大目录。

六、总结

Linux du 命令必知查看磁盘使用量、常用选项(-h-s-a),必会统计目录/文件大小、排序和排除模式。2025年,du 仍是磁盘分析核心工具,结合 ncdu 和脚本更高效,适合 DevOps 和容器化环境。相比其他工具,du 灵活且轻量,适合快速诊断。

如果需要具体场景代码(如脚本或 Docker 示例)或有问题,告诉我,我可以提供更详细解答!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注