du 命令全称 Disk Usage是Linux系统中用于统计指定目录或文件占用磁盘空间容量的核心工具。在磁盘清理、日志文件排查或系统性能优化等场景中通过快速扫描并量化文件系统的空间使用情况帮助用户高效定位磁盘资源瓶颈或异常占用。一、基本语法和参数du 的语法看似简单但参数组合决定了输出的可读性du [选项] [文件或目录]核心参数-h人性化显示Human-readable这是最常用的参数会自动将大小转换为 KB、MB、GB 等易读单位。-s汇总统计Summarize仅显示总大小不列出子目录详情。-a显示所有All不仅显示目录大小也显示目录内的每个文件大小。-d N 或 --max-depthN限制目录层级深度。例如 -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 过滤干扰项。