# 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 磁盘管理将不再困难。

相关推荐
测试修炼手册1 小时前
[测试工具] 用 Codex 做测试实战:从需求分析到自动化用例落地
运维·自动化·需求分析
米高梅狮子1 小时前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
June`1 小时前
网络编程时内核究竟做了什么???
linux·服务器·网络
原来是猿1 小时前
腾讯云服务器端口开放完全指南
服务器·网络·腾讯云
你的保护色2 小时前
【无标题】
java·服务器·网络
楼兰公子2 小时前
RK3588 + Linux7.0.3 网络工程调试错误速查手册
linux·网络·3588
Elnaij2 小时前
Linux系统与系统编程(9)——自设计shell与基础IO
linux·服务器
IpdataCloud2 小时前
稳定的企业级IP数据接口怎么选?可用性指标+离线库高可用方案
运维·网络·tcp/ip
HMS工业网络2 小时前
如何解决使用TwinCAT时EtherCAT网络出现“Sync Manager Watchdog”报错
网络·网络协议·网络安全
WebGIS开发2 小时前
地信职业百科②:GIS运维
运维·gis·就业·转行