💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一、`du` 命令基础
- 基本语法
- 为什么需要 `-h` 选项?
- 二、`du -h` 命令详解
- 输出解读
- 常用选项组合
- 三、`du` 与其他命令的对比
- `du` vs `df`
- `du` vs `ls -l`
- 四、实际应用场景
- 1. 查找大目录
- 2. 监控用户磁盘使用
- 3. 排除特定目录
- 4. 比较目录变化
- 五、高级技巧与注意事项
- 1. 处理符号链接
- 2. 显示修改时间
- 3. 性能优化
- 4. 跨文件系统统计
- 六、常见问题解答
在 Linux 系统管理和日常维护中,了解文件和目录占用磁盘空间的情况是一项基本而重要的任务。du
(Disk Usage)命令是完成这一任务的强大工具,而 du -h
则是其中最常用的命令形式之一。
一、du
命令基础
du
(Disk Usage)命令是 Linux/Unix 系统中用于估算文件和目录磁盘使用情况的实用程序。它通过递归遍历目录结构,计算每个文件和子目录占用的磁盘空间,并以块为单位(默认情况下)显示结果。
基本语法
du [选项] [文件或目录]
如果不指定文件或目录,du
会默认统计当前目录及其所有子目录的磁盘使用情况。
为什么需要 -h
选项?
原始的 du
命令输出以磁盘块为单位(通常 1 块=512 字节或 1KB),这种表示方式对人类阅读不够友好。例如:
du data
可能输出:
123456 data/subdir1
789012 data/subdir2
912468 data
这样的数字难以直观理解。-h
(human-readable)选项的出现解决了这个问题,它会自动选择最合适的单位(KB、MB、GB 或 TB)来显示大小:
du -h data
输出变为:
4.0K data/subdir1
8.2M data/subdir2
1.2G data
二、du -h
命令详解
输出解读
du -h
的典型输出包含多行信息:
- 子目录行:显示每个子目录的大小和路径
- 总计行(最后一行):显示指定目录的总大小
例如:
4.0K data/subdir1
8.2M data/subdir2
1.2G data
这里:
data/subdir1
占用 4.0KBdata/subdir2
占用 8.2MB- 整个
data
目录占用 1.2GB
常用选项组合
-
-s
(汇总):仅显示总大小,不显示子目录详情du -sh data
输出:
1.2G data
-
-c
(总计):在最后添加一个总计行du -hc data
输出:
4.0K data/subdir1 8.2M data/subdir2 1.2G data 1.2G 总用量
-
--max-depth=N
:控制显示的目录深度du -h --max-depth=1 data
只显示 data 下第一级子目录的大小
三、du
与其他命令的对比
du
vs df
du
(Disk Usage):从文件系统角度计算文件和目录占用的空间df
(Disk Free):显示文件系统的整体磁盘使用情况
du
更适合查找具体目录或文件占用的空间,而 df
更适合查看整个磁盘或分区的使用情况。
du
vs ls -l
ls -l
显示的是文件的实际大小(逻辑大小)du
显示的是文件占用的磁盘空间(可能因块分配而大于实际大小)
例如,一个 1 字节的文件:
ls -l
显示 1 字节du
可能显示 4KB(取决于文件系统的块大小)
四、实际应用场景
1. 查找大目录
du -h / | sort -rh | head -n 20
这条命令组合:
- 从根目录开始计算所有目录大小
- 按人类可读格式输出
- 按大小逆序排序
- 显示前 20 个最大的目录
2. 监控用户磁盘使用
du -sh /home/*
快速查看所有用户主目录的磁盘使用情况。
3. 排除特定目录
du -h --exclude='*.log' /var
统计 /var
目录大小,但排除所有 .log
文件。
4. 比较目录变化
du -sh data
# 进行一些操作后
du -sh data
通过两次执行比较目录大小的变化。
五、高级技巧与注意事项
1. 处理符号链接
默认情况下,du
会统计符号链接指向的文件大小。使用 -L
选项可以跟随符号链接:
du -Lh /path
2. 显示修改时间
结合 --time
选项可以显示最后修改时间:
du -h --time data
3. 性能优化
对于大型文件系统,du
可能需要较长时间。可以:
- 使用
--apparent-size
显示表观大小而非磁盘使用量(更快但不够准确) - 限制目录深度
--max-depth
- 在非高峰时段运行
4. 跨文件系统统计
默认 du
会统计挂载点下的其他文件系统。使用 -x
可以限制在当前文件系统:
du -xh /
六、常见问题解答
Q1:为什么 du
和 df
显示的总空间不一致?
A1:可能原因包括:
- 已删除但仍有进程打开的文件
- 文件系统保留空间
- 不同的统计方法(
df
统计整个文件系统,du
统计具体文件)
Q2:如何统计目录中的文件数量而非大小?
A2:使用 find
和 wc
:
find data -type f | wc -l
Q3:du
显示的 size 为什么比实际文件总和要大?
A3:du
统计的是磁盘使用量,包括:
- 文件实际内容
- 文件系统元数据
- 由于块分配导致的额外空间
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙