# Linux 磁盘查看命令详解:df 与 du

Linux 磁盘查看命令详解:df 与 du

在 Linux 系统运维中,查看磁盘空间、定位大文件是高频操作。dfdu 是最核心的两个磁盘相关命令,二者功能相近但用途截然不同。本文从作用、语法、常用参数、实战场景、区别对比等方面详细讲解,方便日常运维与问题排查。


一、df 命令:查看文件系统磁盘使用情况

1. 命令含义

df = disk free ,用于查看整个磁盘分区/文件系统 的总容量、已用空间、剩余空间、挂载点等信息。

它读取的是文件系统超级块(superblock)中的元数据,因此速度极快,适合快速判断分区是否爆满。

2. 基本语法

bash 复制代码
df [选项] [文件/目录]

不指定路径时,默认显示所有已挂载文件系统。若指定文件或目录,则显示该路径所在分区的使用情况。

3. 常用核心参数

参数 说明
-h 以人类可读格式显示(KB/MB/GB),最常用
-T 显示文件系统类型(ext4/xfs/tmpfs 等)
-i 查看 inode 使用情况(文件数量占用)
-a 显示所有文件系统,包括伪文件系统(proc、tmpfs)
-t 类型 只显示指定类型的文件系统
-x 类型 排除指定类型的文件系统

4. 常用示例

(1)查看所有分区空间(推荐)
bash 复制代码
df -h

输出字段说明:

  • Filesystem:设备或分区名
  • Size:总容量
  • Used:已使用空间
  • Avail:可用空间
  • Use%:使用率
  • Mounted on:挂载点
(2)查看文件系统类型
bash 复制代码
df -Th

-T 显示类型,-h 人类可读,两者结合非常实用。

(3)查看指定目录所在分区
bash 复制代码
df -h /home
(4)查看 inode 占用(解决"磁盘未满但无法创建文件"问题)
bash 复制代码
df -i

Use% 达到 100% 时,即使还有空间也无法新建文件。

(5)过滤掉临时文件系统(让输出更干净)
bash 复制代码
df -h -x tmpfs -x devtmpfs

二、du 命令:查看文件/目录磁盘占用大小

1. 命令含义

du = disk usage ,用于统计指定目录或文件 实际占用的磁盘空间(以块为单位计算)。

它会递归遍历目录下所有文件,统计精确,但速度比 df 慢,尤其在大目录下耗时明显。

2. 基本语法

bash 复制代码
du [选项] [文件/目录]

不指定路径时,默认统计当前目录。

3. 常用核心参数

参数 说明
-h 人类可读格式显示
-s 只显示总计大小,不展开子目录
-a 显示所有文件和目录的大小(默认仅显示目录)
-d N / --max-depth=N 限制递归深度为 N 级(-d 1 仅看一级子目录)
-c 最后显示总计大小
--exclude=PATTERN 排除匹配的文件或目录(支持通配符)

4. 常用示例

(1)查看当前目录总大小
bash 复制代码
du -sh .
(2)查看指定目录总大小
bash 复制代码
du -sh /var/log
(3)查看一级子目录大小(快速定位大目录)
bash 复制代码
du -h --max-depth=1 /

或简写为(GNU 版本支持):

bash 复制代码
du -hd1 /
(4)显示目录下所有文件大小
bash 复制代码
du -ah /etc
(5)排除某些文件后统计
bash 复制代码
du -sh --exclude="*.log" /var

也可排除多个模式:

bash 复制代码
du -sh --exclude="*.log" --exclude="*.tmp" /var
(6)统计多个目录并显示总和
bash 复制代码
du -ch /home /root /usr

末尾会自动输出一行总计。


三、df 与 du 的核心区别

对比项 df du
统计对象 磁盘分区/文件系统 目录/单个文件
统计速度 快(读取超级块元数据) 慢(递归遍历所有文件)
统计范围 全局空间(整个分区) 具体路径(按需统计)
数据来源 文件系统元数据 实际文件占用的磁盘块
典型用途 查看分区是否满 定位大文件、大目录

常见现象:df 和 du 结果不一致

  • 表现df 显示磁盘已满,但 du 统计的总和远小于分区容量

  • 原因 :某个文件已被 rm 删除,但仍然被某个运行的进程打开(未释放句柄),导致空间未真正释放

  • 排查方法

    bash 复制代码
    lsof | grep deleted

    找到占用进程的 PID,然后重启该进程或直接 kill -9 PID,空间即可释放

  • 预防提示 :大文件建议使用 > /path/to/file 清空而非直接 rm


四、实战场景:快速定位磁盘爆满原因

  1. 先看整体 :用 df -h 查看哪个分区使用率接近 100%
  2. 进入分区挂载点 :例如 cd /var
  3. 逐层定位大目录 :用 du -h --max-depth=1 查看一级子目录大小
  4. 深入最大目录:重复上一步,直到找到可疑目录
  5. 找出 Top 10 大文件 :使用 find + sort 组合

示例命令链:

bash 复制代码
df -h
cd /var
du -h --max-depth=1
du -ah /var/log | sort -hr | head -10

⚠️ 注意:sort -hr 中的 -h 参数在部分旧版 sort 中不支持,若报错可改用 sort -rn(按数字倒序)。

更稳健的 Top 10 大文件查找:

bash 复制代码
find /var/log -type f -exec du -h {} + 2>/dev/null | sort -hr | head -10

五、补充说明:命令安装与最小化系统

在某些 Docker 容器或最小化 Linux 系统中,dfdu 可能默认可用(属于 coreutils 包),但如果提示未找到,可安装:

  • Debian/Ubuntu

    bash 复制代码
    apt install coreutils
  • CentOS/RHEL

    bash 复制代码
    yum install coreutils

lsof 命令需要单独安装:

  • Debian/Ubuntuapt install lsof
  • CentOS/RHELyum install lsof

六、总结

场景 推荐命令
快速检查分区是否爆满 df -h
查看 inode 是否耗尽 df -i
统计某个目录总大小 du -sh <目录>
定位当前目录下的大目录 du -hd1
查找最大的一批文件 find + du + sort 组合
解决 df 和 du 结果不一致 `lsof
  • df 看分区整体空间,快速判断是否爆满
  • du 看目录/文件大小,精准定位占用源
  • 日常优先使用 -h 参数,可读性最强
  • 磁盘空间异常时,先 df 再 du,配合 lsof 排查删除但未释放的文件

掌握这两个命令,Linux 磁盘管理将不再困难。

相关推荐
Z文的博客1 分钟前
嵌入式LINUX QT 开发 .gitignore 文件编写指南
linux·git·qt·elasticsearch·嵌入式
老王谈企服2 分钟前
流程型制造业生产优化,未来将如何被大模型技术重构?2026智造深研:实在Agent驱动端到端生产闭环
大数据·网络·人工智能·ai·重构
Amnesia0_05 分钟前
磁盘文件系统
linux·运维·数据库
数据库知识分享者小北5 分钟前
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
运维·数据库·阿里云·阿里巴巴·rds·智能运维
zhangfeng11338 分钟前
LLaMA-Factory 保存 checkpoint 时崩溃解决办法 OOM 内存溢出(不是显存)
运维·服务器·人工智能·深度学习·llama
YaBingSec9 分钟前
玄机网络安全靶场:GeoServer XXE 任意文件读取(CVE-2025-58360)
java·运维·网络·安全·web安全·tomcat·ssh
REDcker12 分钟前
Webpack Rollup Vite三者构建对比详解 开发体验与选型考量
运维·webpack·devops
北极熊kw15 分钟前
FreeBSD 安装 Xrdp 后,远程桌面时只显示白色终端 Xterm
linux·运维·服务器·rdp·freebsd·xterm
枳实-叶15 分钟前
【Linux驱动开发】第二天:内核模块生命周期+内存分配全解
linux·驱动开发
计算机安禾16 分钟前
【Linux从入门到精通】第28篇:文本处理三剑客(中)——sed 流编辑器
linux·服务器·编辑器