当前位置:首页>Linux>Linux常用命令:du

Linux常用命令:du

  • 2026-10-11 08:11:55
Linux常用命令:du

du 命令(全称 Disk Usage)是Linux系统中用于统计指定目录或文件占用磁盘空间容量的核心工具。在磁盘清理、日志文件排查或系统性能优化等场景中,通过快速扫描并量化文件系统的空间使用情况,帮助用户高效定位磁盘资源瓶颈或异常占用。

一、基本语法和参数

du 的语法看似简单,但参数组合决定了输出的可读性:

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

核心参数:

-h:人性化显示(Human-readable),这是最常用的参数,会自动将大小转换为 KB、MB、GB 等易读单位。

-s:汇总统计(Summarize),仅显示总大小,不列出子目录详情。

-a:显示所有(All),不仅显示目录大小,也显示目录内的每个文件大小。

-d N 或 --max-depth=N:限制目录层级深度。例如 -d 1 仅显示当前目录下一级子目录的大小,避免输出过长。

-c:计算总计,通常在最后增加一行统计总和。

--exclude:排除特定文件,例如排除日志文件统计。

提示:du 统计的是文件实际占用的磁盘块大小,而 ls 显示的是文件声明的逻辑大小,两者可能不一致。

二、输出详解

执行 du 命令时,通常会有多行输出,每一层级都会显示其占用的空间:

示例解析:若执行命令:

du -h /home

输出:

4.0K    /home/log/nginx.log                  8.0K    /home/log/mysql.log                  12K     /home/log                  12K     /home

提示:在未加-s参数情况下递归显示深层文件,输出结果按层级递归显示。最内层目录先显示,最后显示根目录 /home 的总大小。

三、实用案例

1. 查看当前目录总大小(不含子项明细)

du -sh

描述:-s 汇总(避免递归显示深层文件),-h 人性化单位(KB/MB/GB),直接输出目录大小(如 2.6G)。

2. 查看当前目录所有子目录及文件大小(最常用排查技巧)

du -sh *

描述:-s 汇总(避免递归显示深层文件),-h 人性化单位(KB/MB/GB),* 通配符匹配当前目录下所有非隐藏文件和目录。

3. 查找指定目录下最大的 5 个目录或文件

du -sh /home/* | sort -rh | head -5

描述:du -sh /home/*:列出 /home 下一级目录及文件的大小,sort -hr:按可读的数字逆序排序(最大的在最前),head -5:只看前 5 个。

4. 排除特定目录统计

du -sh --exclude="/var/log*" /var

描述: 统计 /var 时自动跳过所有 log 开头的目录,聚焦核心数据占用情况。

5. 统计特定类型文件

du -ch *.log

描述: 查看当前目录下所有 .log 文件的总大小,-c 参数会在最后加一行 “total”,直观显示所有 .log 文件的总占用。

四、常见问题

1. du 和 df 显示的磁盘使用率不一致?

原因: 通常是文件被删除了,但仍有进程在占用(打开)该文件,导致磁盘空间未真正释放。

解决: 使用 lsof | grep deleted 查找已删除但仍被占用的文件句柄,重启对应进程即可。

2. du 执行速度很慢?

原因:du 需遍历目录下所有文件的元数据,若目录层级极深或文件数量巨大(如百万级小文件),计算耗时较长。

解决: 使用 -d N 限制深度(如 -d 1),或分步排查,避免直接对根目录 / 执行无限制 du。

3. Permission denied 报错?

原因: 普通用户无法读取其他用户的私有目录(如 /root)。

解决: 在命令前加 sudo 提权执行。

五、扩展技巧

1. 与 df 命令联动排查

磁盘占用排查流程:先用 df -h 确认哪个分区满了,进入该分区根目录,用 du -sh * 逐层排查。

2. 只统计文件数量(非大小)

du -a /path/to/dir | wc -l

描述:du -a 列出所有文件,wc -l 统计行数,即文件总数。

总结

du 命令的核心价值在于对磁盘空间占用的精准量化与快速定位。当面临磁盘告警时,遵循科学排查流程是关键,避免盲目删除文件引发风险。建议按以下步骤系统应对:

1.先用 du -sh * 快速扫描当前目录,定位大文件;

2.结合 df 确认分区,层层递进排查;

3.必要时用 --exclude 过滤干扰项。

最新文章

随机文章