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

相关推荐
路溪非溪2 小时前
Linux中gpio子系统的现代接口
linux·arm开发·驱动开发
攻城狮在此2 小时前
华为交换机Console口密码如何清除
运维·网络·华为
内心的一片海2 小时前
服务器内存异常占用
运维·服务器
文静小土豆3 小时前
Centos7负载异常过高排查思路(Load Average)
linux
Deitymoon3 小时前
linux——原子操作
linux
hhcgchpspk3 小时前
网速上传下载流量监测工具尝试
网络·python·cmd·psutil
亚空间仓鼠3 小时前
OpenEuler系统常用服务(四)
linux·运维·服务器·网络
刘佬GEO4 小时前
【无标题】
网络·人工智能·搜索引擎·ai·语言模型
中议视控4 小时前
展厅和会议网络可编程中央控制系统主机支持HomeKit技术和BACnet网络
网络