在日常运维中,我经常需要快速定位是哪些目录占用了大量磁盘空间。du(disk usage)命令正是为此而生,它能精准统计文件或目录的磁盘使用量,比肉眼翻找高效得多。下面我将结合实际场景,带你彻底掌握这个命令

du命令查看文件大小

du最基本的用法是直接跟上文件或目录名。例如执行du /home/user/file.txt,它会显示该文件占用的磁盘块数,默认以512字节为单位。但这种方式输出不够直观,因为现代Linux发行版通常默认以千字节(K)显示,具体取决于系统配置。

linux下du命令_命令下达_命令下载文件到本地

要查看目录下所有子项的大小,可以不加任何参数直接运行du,它会递归统计每个子目录的总用量。不过输出结果可能会很长,建议配合-h参数让数字变得易读,比如du -h /var/log就能看到每个日志文件夹占用的MB或GB级别数据。

du命令常用参数

-h参数几乎是我每次必用的选项,它能把字节自动换算成KB、MB、GB等人类易读单位。而-s参数则用来汇总整个目录的总大小linux下du命令,不列出子目录明细,比如du -sh /opt一键查看opt目录总共占了多大空间。

命令下载文件到本地_linux下du命令_命令下达

-c参数可以在最后显示总计行,适合同时统计多个目录时查看总和。--max-depth=N能控制递归层级,当只想看第一级子目录时用--max-depth=1非常方便。-a参数会显示所有文件而不仅是目录,排查大文件时特别有用。

du和df有什么区别

很多新手会混淆dudf的输出结果。df查看的是文件系统的整体磁盘占用,包括已被删除但进程仍持有的文件空间,而du只统计当前可见的文件和目录。因此df显示的“已用”通常会比du汇总的结果要大一些。

linux下du命令_命令下达_命令下载文件到本地

当发现df显示磁盘快满linux查看磁盘空间,但du统计各目录却对不上时linux标准教程,很可能是有大文件被删除但进程未释放。此时可以用lsof | grep deleted找出这些“幽灵文件”。记住这个差异,能帮你避免误判磁盘空间问题的真正原因。

如何用du排序

直接执行du的输出是乱序的,很难一眼看到最大的文件或目录。我通常的做法是结合sort命令:du -sh * | sort -hr-h参数让sort能理解K、M、G等单位,-r是从大到小倒序排列,这样最大的项目就会排在最前面。

如果想查看更深层级的排序,可以用du -ah --max-depth=2 | sort -hr。注意加上-a才会显示文件,否则只显示目录。对于根目录的全局排查,建议先cd到根目录,再执行du -sh --max-depth=1 | sort -hr,快速定位哪个一级目录占用最多。

du命令人性化大小

命令下载文件到本地_linux下du命令_命令下达

du默认输出的数字是磁盘块数,即使知道每个块是512字节或1024字节,手动换算也很痛苦。所以-h参数几乎是标准配置。除此之外,-B参数可以自定义块大小,比如du -B 1M会以兆字节为单位显示,不过不如-h灵活。

-k-m分别强制以KB和MB为单位,适合脚本处理时固定单位。如果需要精确到字节,可以使用-b参数,但输出会很长。对于日常交互式使用,始终记住-h是最人性化的选择linux下du命令,它让输出结果自动适应数据量级。

du命令统计目录总大小

命令下载文件到本地_命令下达_linux下du命令

统计单个目录的总大小是du最基础也最常用的场景。du -sh 目录名即可。如果想排除某些子目录,比如排除proc和sys这类虚拟文件系统,可以用--exclude参数:du -sh --exclude=proc --exclude=sys /

当需要统计多个目录的总和时,-c参数会很有帮助。例如du -sch /var /home /opt,最后一行会显示这三个目录的总大小。另外注意,软链接默认会统计链接目标的大小,如果想统计链接本身的大小,需要加上-L-P参数来控制是否跟随链接。

你平时最常用du的哪个参数组合来快速定位磁盘占用大户?欢迎在评论区分享你的高效用法,也别忘了点赞和转发给更多需要的小伙伴。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复