Linux统计目录大小du命令实例

32次阅读

使用 du</code></code></code></code></code></code></code></code></code></code> 命令可统计文件和目录磁盘占用,结合 -s</code>、-h</code></code>、–max-depth、-a</code> 等选项实现简洁或详细输出;通过 du</code></code></code></code></code></code></code></code></code></code> -h</code></code> /path |</code> sort</code></code> -r</code>h |</code> head</code> -n 10 快速定位最大占用目录;du</code></code></code></code></code></code></code></code></code></code> 与 df</code></code></code></code></code> 不同,前者查看文件级占用,后者查看文件系统级空间;结合 findxargs 可精确统计特定类型文件或排除指定目录。</blockquote>

Linux统计目录大小du命令实例</p>

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令在 Linux 中是一个极其强大的工具</a>,专门用来统计文件和目录所占用的磁盘空间。它能让你迅速了解某个文件或目录究竟吞噬了多少存储,是排查磁盘空间不足问题的得力助手,也能帮你追踪数据增长的趋势。</p>

解决方案</h2>

在使用

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令时,你会发现它有很多灵活的选项,能够满足不同的统计需求。最基础的用法是直接跟上目录路径,它会递归地列出该目录下所有子目录和文件的空间占用。</p>

比如,我想看看当前目录的总体大小,我通常会这么做:</p>

du</code></code></code></code></code></code></code></code></code></code> -s</code>h .</pre>

</div></div>

这里的

-s</code></pre>

</div></div> (summary) 选项会只显示总计,而不是列出每个子目录的详细信息,而

-h</code></code></pre>

</div></div>

</div></div> (human-r</code>eadable) 则会将结果以人类更易读的单位(如 K, M, G)显示出来。这比默认的以块(block)为单位显示要直观得多。</p>

如果你想深入了解某个特定目录,比如

/var/log</code></pre>

</div></div> 到底有多少日志文件,占用了多少空间,但又不想看到每个日志文件的详细大小,只想看子目录的总和,可以这样:</p>

du</code></code></code></code></code></code></code></code></code></code> -h</code></code> --max-depth=1</code> /var/log</code></pre>

</div></div>

--max-depth=1</code></pre>

</div></div> 限制了

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 只下探一层目录,这在排查哪个子目录是“大户”时非常有用。我个人就很喜欢这个选项,它能让我快速锁定问题区域,而不会被海量的文件列表淹没。</p>

有时候,我需要知道所有文件(包括隐藏文件)和目录的大小,这时候

-a</code></pre>

</div></div> 选项就派上用场了:</p>

du</code></code></code></code></code></code></code></code></code></code> -a</code>h /path/to/directory</pre>

</div></div>

这会列出路径下所有文件和目录的大小,同样以人类可读的格式显示。</p> Linux统计目录大小du命令实例

如何快速找出Linux系统中占用空间最大的目录?</h2>

这绝对是运维或开发人员最常遇到的场景之一:服务器磁盘报警,你需要马上找出是哪个目录在“作妖”。我通常会先定位到可能出问题的挂载点,然后用

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 结合

sort</code></code></pre>

</div></div>

</div></div> 和

head</code></pre>

</div></div> 来快速筛选。</p>

假设我的

/data</code></code></pre>

</div></div>

</div></div> 分区快满了,我想知道是哪个子目录占用了大部分空间。我会这么做:</p>

sudo</code> du</code></code></code></code></code></code></code></code></code></code> -h</code></code> /data</code></code> |</code> sort</code></code> -r</code>h |</code> head</code> -n 10</pre>

</div></div>

这里

sudo</code></pre>

</div></div> 是为了确保我有权限读取所有文件。

du</code></code></code></code></code></code></code></code></code></code> -h</code></code> /data</code></code></pre>

</div></div> 会列出

/data</code></code></pre>

</div></div>

</div></div> 下所有文件和目录的大小(递归)。然后,我用管道

|</code></pre>

</div></div> 把结果传递给

sort</code></code> -r</code>h</pre>

</div></div>。

-r</code></pre>

</div></div> 表示反向排序(从大到小),

-h</code></code></pre>

</div></div>

</div></div> 则是让

sort</code></code></pre>

</div></div>

</div></div> 也能理解人类可读的单位。最后,

head</code> -n 10</pre>

</div></div> 截取前10行,也就是占用空间最大的10个目录或文件。</p>

这个组合命令简直是我的救星,它能让我迅速从茫茫多的目录中揪出真正的“胖子”,省去了大量手动检查的时间。我记得有一次,就是靠这个命令,我发现一个日志归档脚本出了问题,导致一个旧目录里堆积了TB级的日志文件,差点把整个文件系统撑爆。</p>

//phps.yycxw.com/ai/%E6%B3%95%E8%AF%AD%E5%86%99%E4%BD%9C%E5%8A%A9%E6%89%8B">Linux统计目录大小du命令实例</a>

//phps.yycxw.com/ai/%E6%B3%95%E8%AF%AD%E5%86%99%E4%BD%9C%E5%8A%A9%E6%89%8B">法语写作助手</a>

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。</p>

Linux统计目录大小du命令实例31</span> </div> </div> //phps.yycxw.com/ai/%E6%B3%95%E8%AF%AD%E5%86%99%E4%BD%9C%E5%8A%A9%E6%89%8B"> 查看详情</span> Linux统计目录大小du命令实例</a> </div> Linux统计目录大小du命令实例

du</code></code></code></code></code></code></code></code></code></code>命令与df</code></code></code></code></code>命令有何不同,何时选择使用它们?</h2>

这是一个经典的混淆点,很多人搞不清

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 和

df</code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 的区别</a>,甚至会觉得它们是重复的。但实际上,它们关注的焦点完全不同。</p>

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> (disk usage) 统计的是文件和目录实际占用的磁盘空间</strong>。它会遍历你指定路径下的所有文件和目录,累加它们的大小。这意味着,如果一个文件被多个硬链接引用,

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 可能会多次计算它的空间(尽管有些

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 版本会有优化,但基本原理是这样),或者如果文件是稀疏文件(sparse file),

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 报告的可能是其“逻辑大小”或“实际存储大小”,这取决于具体实现和选项。更重要的是,

du</code></code></code></code></code></code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 报告的是文件系统内部的数据块使用情况。</p>

df</code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> (disk free) 统计的是文件系统的整体使用情况</strong>,它报告的是文件系统层面上的已用空间、可用空间和总空间。

df</code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 不会去遍历文件,它直接查询文件系统的元数据来获取这些信息。这意味着,

df</code></code></code></code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 看到的是文件系统分配给文件的块数,包括了文件系统本身的开销,以及一些可能已经删除但尚未释放的块(比如进程还在持有文件句柄的情况)。</p>

我通常是这样使用的:</p>