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
说明:ncdu
是 du
的图形化替代,适合快速浏览。
三、实践示例(综合应用)
- 检查用户目录空间:
du -sh /home/user/*
输出:
4.0M /home/user/docs
8.0M /home/user/downloads
4.0K /home/user/file.txt
功能:列出 /home/user
下所有一级目录和文件的大小。
- 监控脚本(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 发出警告。
- Docker 容器分析:
du -sh /var/lib/docker
输出(示例):
1.2G /var/lib/docker
功能:检查 Docker 镜像和容器占用的磁盘空间。
四、注意事项与最佳实践
- 单位选择:
- 优先用
-h
查看人类可读格式。 - 用
-k
或-m
确保脚本中单位一致。
- 性能优化:
- 大目录(如
/
)用--max-depth
限制深度,避免长时间运行。 - 排除无关文件(如
--exclude="/proc"
),提高效率。
- 权限问题:
- 访问受限目录需
sudo
:bash sudo du -sh /root
- 与
df
区别:
du
:统计具体文件/目录大小。df
:显示整个文件系统的使用情况。
- 2025年趋势:
- 交互工具:
ncdu
比du
更直观,适合快速分析。 - DevOps:
du
结合 Prometheus/Grafana 监控磁盘。 - KMP 环境:在 Android/Linux 容器中,
du
分析 WebView 缓存:bash du -sh /data/data/com.example/cache
五、学习建议
- 练习:在 Linux 终端实践
du -h
、du -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 示例)或有问题,告诉我,我可以提供更详细解答!