Linux du 怎样排除挂载点统计目录空间
我在排查目录空间时最容易踩的坑,不是 du 不会用,而是统计口径被挂载目录悄悄改变了:从父目录开始递归时,结果可能把另一个文件系统里的内容也算进来。要按文件系统边界停止遍历,直接使用 du -x,长选项写法是 du --one-file-system。
官方地址:https://www.gnu.org/software/coreutils/du
常用起点是du -xh --max-depth=1 /srv:-x只遍历与/srv相同文件系统的目录,-h让大小易读,--max-depth=1让结果停在第一层。若只要总计,再换成du -xsh /srv。
先明确 du 的统计边界
du 的默认任务是递归汇总文件或目录的设备使用量。这里的“排除挂载点”要先说清楚:-x 判断的是文件系统边界,等价于“不要进入不同文件系统的目录”,并不是按目录名字寻找所有 mountpoint。若一个挂载位置和起始目录仍落在同一个文件系统上,不能仅凭“它是挂载点”就保证 -x 会把它排除。

因此,先把需要保护的统计资产定义为“起始目录所在文件系统的空间”,再把跨文件系统内容视为会污染口径的路径。这样排查出来的数字才适合和同一主机上的文件系统容量、配额或历史记录比较。
用 du -x 限制文件系统范围
最小命令如下:
# 只统计 /srv 所在文件系统,不进入其他文件系统的目录 du -x /srv # 长选项写法与 -x 等价,适合写进运维说明 du --one-file-system /srv
GNU du 手册把 -x 定义为 --one-file-system,作用是跳过位于不同文件系统上的目录。命令返回的每一行仍然是目录空间统计,不会额外告诉你“哪些挂载点被跳过”;如果要留下可复查记录,应该把起始路径和完整参数一起保存。
人工查看时通常需要可读单位和一层汇总:
# 在 /srv 第一层查看同一文件系统内的目录空间 du -xh --max-depth=1 /srv # 只保留 /srv 的总计,避免子目录列表干扰判断 du -xsh /srv
-h 只改变显示单位,--max-depth=1 只限制输出深度,二者都不会替代 -x。我一般先看第一条,确认哪个一级目录占用明显,再用第二条记录一个不会被子目录列表分散注意力的总数。
叠加深度、总计与排除模式
当目标是“同一文件系统内,找出第一层的大户”,可以组合边界和深度:
# -x 负责文件系统边界,-d 负责显示层级,-h 负责单位 du -xhd 1 /var # 需要所有参数写全时,避免读者把数字误认为目录名 du --one-file-system --human-readable --max-depth=1 /var
如果目标只是排除名字匹配的文件或子目录,使用 --exclude,不要把它误写成 -x:
# 只排除名称匹配 cache 的条目;这是名称模式,不是挂载边界 du -xh --exclude='cache' --max-depth=1 /var # 排除所有以 .tmp 结尾的文件或目录 du -xh --exclude='*.tmp' /var
--exclude 使用 shell 模式而不是正则表达式,模式边界要按路径树实际名称来设计。它和 -x 可以同时使用,但两者的风险控制点不同:前者改变名称集合,后者改变可遍历的文件系统范围。

识别 -x 的边界与替代需求
下面几种需求看起来都像“少统计一点”,实际控制对象并不一样:
| 真实目标 | 选项 | 控制对象 | 注意点 |
|---|---|---|---|
| 不跨到别的文件系统 | -x | 文件系统边界 | 不是按挂载点名称排除 |
| 忽略某些名称 | --exclude=PATTERN | shell 名称模式 | 不是正则表达式 |
| 只看固定层级 | -d N | 显示深度 | 不改变递归边界 |
| 只输出总计 | -s | 输出粒度 | 不等于只统计同一文件系统 |
尤其要注意 -d 的误导性:它只决定打印多少层,不代表更深层目录没有被考虑。想限制“能不能进入另一个文件系统”,仍然要显式写 -x。
建立一次可复查的统计清单
为了避免不同人用不同口径复查,我会把下面四项和命令一起记录:
- 起始路径:例如
/srv,不要只记录“数据目录”。 - 边界参数:是否使用
-x或--one-file-system。 - 输出范围:是否使用
--max-depth、-s和-h。 - 排除规则:若有
--exclude,保存完整的 shell 模式。
如果结果需要用于容量告警或迁移前估算,还要单独说明它统计的是设备使用量还是表观大小。GNU du 默认汇总设备使用量;--apparent-size 是另一种口径,不能和“排除不同文件系统”混为一个开关。
常见问题
为什么 du -x 仍然看到了挂载目录名?
-x 约束的是遍历和统计的文件系统范围,不承诺从输出中删除父目录名。若挂载目录本身仍出现在列表里,重点看它是否被计入了另一个文件系统里的内容,而不是只看名称是否出现。
du -x 和 du --exclude 哪个更适合排除挂载点?
若问题是跨文件系统污染,优先使用 -x。--exclude 只按名称模式匹配,目录改名或路径层级变化就可能改变结果,不能替代文件系统边界控制。
--max-depth=1 能不能达到 du -x 的效果?
不能。--max-depth 限制显示层级,-x 限制不同文件系统的遍历边界;一个控制输出粒度,一个控制统计范围。
什么时候需要 du -s?
只需要给出一个目录总数,或要把结果交给脚本继续处理时,可以使用 du -xsh /path。如果还需要定位哪个一级目录占用空间,先用 --max-depth=1 保留分项。
journalctl 怎样输出 JSON 格式日志
- 上一篇
- journalctl 怎样输出 JSON 格式日志
- 下一篇
- Linux xargs 怎样安全处理带空格的文件名
-
- 文章 · linux | 1小时前 | Linux NameSpace util-linux lsns 进程命名空间
- Linux lsns 怎样查看进程所属命名空间
- 215浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux ionice 怎样给备份进程设置 IO 优先级
- 219浏览 收藏
-
- 文章 · linux | 1小时前 | Linux · 运维 · Linux 内核参数 sysctl sysctl.d systemd-sysctl
- Linux sysctl 怎样持久化内核参数配置
- 184浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux /proc/meminfo 怎样读取 HugePages 使用量
- 261浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux tar --listed-incremental 怎样制作增量归档
- 284浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux xargs 怎样安全处理带空格的文件名
- 478浏览 收藏
-
- 文章 · linux | 2小时前 |
- journalctl 怎样输出 JSON 格式日志
- 422浏览 收藏
-
- 文章 · linux | 2小时前 | Linux · WorkingDirectory systemd.exec systemd服务工作目录
- systemd.exec WorkingDirectory 怎样固定服务工作目录
- 392浏览 收藏
-
- 文章 · linux | 2小时前 | Linux 定时任务 OnCalendar systemd.timer
- systemd.timer 怎样按日历表达式定时启动服务
- 285浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 720次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 728次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 804次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 765次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 602次使用
-
- Prometheus&Grafana性能监控
- 2023-01-26 106浏览
-
- 云计算-带你安装MySQL数据库并去除安全隐患
- 2023-01-14 411浏览
-
- 用service命令管理mysql启停
- 2023-02-23 209浏览
-
- Linux自动备份MySQL
- 2023-02-16 312浏览
-
- linux+nginx+mysql+php实用服务器配置教程
- 2023-01-14 441浏览

