【Linux】du 命令查看文件和目录的磁盘占用

📅 发布时间:2026/7/11 22:35:48 👁️ 浏览次数:
【Linux】du 命令查看文件和目录的磁盘占用
du 命令详解查看文件和目录的磁盘占用dudisk usage是 Linux 中最常用的查看磁盘空间占用情况的命令之一。它可以统计文件、目录甚至整个文件系统的实际占用空间非常适合排查“磁盘满了”“哪个目录吃空间”等场景。下面从基础用法到高级技巧一次性把du搞懂。1. 基本用法du[选项][路径]最常用的几种写法# 查看当前目录的总大小人类可读格式du-sh.# 查看指定目录的总大小du-sh /vardu-sh /home# 查看当前目录下每个子目录的大小du-sh *# 只看某几个目录du-sh /var/log /var/cache /tmp2. 最常用选项速查表选项含义推荐场景示例-hhuman-readableK、M、G、T 显示几乎必用du -h-ssummary只显示总大小快速看某个目录占多少du -sh /var-c在最后显示总计grand total统计多个目录时有用du -sh * -c--max-depthN最大显示深度N0 只显示总计N1 显示一级子目录控制输出层级du -h --max-depth1-aall同时显示文件不仅仅目录找出单个大文件du -ah --max-depth1--apparent-size显示逻辑大小不考虑稀疏文件、压缩等排查稀疏文件或压缩文件系统--apparent-size-k/-m以 KB / MB 为单位显示不推荐h 更好老系统或脚本兼容du -sk--time显示最后修改时间找出最近占用空间的文件/目录du -h --time--inodes显示 inode 占用情况排查 inode 用尽问题du --inodes -h3. 推荐的实用组合背下来就够用# 1. 当前目录下占用最大的前 10 个子目录/文件du-h --max-depth1.|sort-hr|head-n11# 2. 整个 /home 下占用最大的前 10 个目录du-h --max-depth1/home|sort-hr|head-n11# 3. 找出 /var 里占用最大的前 5 个目录du-h --max-depth1/var|sort-hr|head-n6# 4. 查看当前目录所有文件和子目录包含隐藏文件du-ah.--max-depth1|sort-hr|head-n20# 5. 只看目录排除文件du-h --max-depth1-- * .[^.]*|sort-hr# 6. 统计 /data 目录总大小 显示每个一级子目录du-sh /data/* /data/.[!.]* /data/..?*2/dev/null|sort-hr# 7. 快速定位大日志文件du-ah /var/log|sort-hr|head-n204. 常见误区 注意事项现象原因 / 解释解决 / 正确理解方式du -sh .比df -h显示的小很多du 显示的是文件实际占用块df 显示的是文件系统已分配空间含预留、元数据正常现象尤其是大量小文件时差距明显看到.和..占用很大这是硬链接计数导致的重复计算忽略它们关注具体子目录使用--apparent-size后变大了显示的是逻辑大小稀疏文件显示为“看起来很大”稀疏文件、压缩文件系统、hole 导致的正常现象du 运行很慢目录层级深、文件数量多加--max-depth1先粗看再深入排查权限不够显示部分目录普通用户无法访问 /root 等目录用sudo du ...5. 进阶技巧结合其他命令更强大# 找出大于 1GB 的文件/目录du-ah.|awk$1 ~ /[0-9][G]/|sort-hr# 按大小排序并显示路径更清晰du-h --max-depth1.|sort-h|column-t# 只统计特定后缀文件比如日志find/var/log -type f -name*.log-execdu-h{}|sort-hr# 实时监控某个目录增长watch-n5du -sh /data脚本小工具可选保存为disktop10#!/bin/bash# 用法disktop10 /var 或 disktop10dir${1:-.}echo前10大占用$dirdu-h --max-depth1$dir2/dev/null|sort-hr|head-n116. 总结最常用的一行命令# 快速查看当前目录占用情况 前10大子项du-sh.du-h --max-depth1.|sort-hr|head-n11或者更简洁du-h --max-depth1.|sort-hr|head掌握这几个组合基本能应对 90% 的磁盘空间排查场景。有具体场景想排查比如 /var 爆满、docker 占用大、某个用户家目录超大可以告诉我我帮你写更针对性的命令