4 min read

Linux 硬盘空间查询完全指南:掌握 df、du 和 lsblk 命令

Linux 硬盘空间查询完全指南:掌握 df、du 和 lsblk 命令

在 Linux 系统中,有多个命令可以用来查询硬盘空间,每个命令的侧重点不同。掌握最常用的几个命令就能满足绝大部分需求。

✅ 方案一:使用 `df` 命令(查看磁盘分区使用情况)

df(Disk Free)命令是最常用、最直接的命令,用于查看文件系统的总容量、已用空间、可用空间和挂载点

1. 基础用法

直接在终端输入 df

df

输出结果可能类似这样:

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/root       30413744  13254680  15671068  46% /
devtmpfs          3941208         0   3941208   0% /dev
tmpfs             3983360         0   3983360   0% /dev/shm
tmpfs              796672      1032    795640   1% /run
tmpfs                5120         0      5120   0% /run/lock
/dev/sda1        5232588    523259         0 100% /boot/efi
  • Filesystem: 文件系统的名称,通常是磁盘分区的路径。
  • 1K-blocks: 总容量,以 1KB 为单位。这个单位不太直观。
  • Used: 已使用的空间。
  • Available: 可用的空间。
  • Use%: 已使用空间的百分比。
  • Mounted on: 挂载点,即这个分区对应到系统里的哪个目录。

2. 推荐用法:`df -h`

为了更直观地查看大小,强烈推荐使用 -h (--human-readable) 参数,它会以 K (KB), M (MB), G (GB) 等易读的单位显示。

df -h

输出结果会变得非常清晰:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G   13G   15G  46% /
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           779M  1.1M  778M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda1       5.0M  5.0M     0 100% /boot/efi

现在,你可以一眼看出根分区 / 总共 29G,用了 13G,还剩 15G。

✅ 方案二:使用 `du` 命令(查看目录或文件大小)

df 查看的是整个分区的概况,而 du(Disk Usage)命令则用于查看某个特定目录或文件占了多少空间。

1. 查看当前目录的总大小

du -sh
  • -s (--summarize): 只显示总计大小,不列出每个子目录的大小。
  • -h (--human-readable): 同样,以易读的单位显示。

2. 查看指定目录的大小

想查看 /var/log 目录占了多少空间?

du -sh /var/log

输出可能像:

1.2G    /var/log

3. 查看目录下各子目录的大小并排序

这是一个非常实用的组合,可以帮你快速找到哪个子目录是"空间大户"。

du -h --max-depth=1 / | sort -hr

我们来分解这个命令:

  • du -h --max-depth=1 /:
    • -h: 易读单位。
    • --max-depth=1: 只显示根目录 / 下第一层子目录的大小,不继续深入。
  • |: 管道,把前一个命令的输出作为后一个命令的输入。
  • sort -hr:
    • sort: 排序命令。
    • -h: (--human-numeric-sort) 按人类易读的数字大小排序(如 2G > 10M)。
    • -r: (--reverse) 逆序排序,即从大到小排列。

输出结果会是这样,最大的目录排在最前面:

12G     /usr
8.5G    /home
3.1G    /var
1.2G    /opt
...
46M     /etc
16K     /lost+found

✅ 方案三:使用 `lsblk` 命令(查看磁盘块设备信息)

lsblk(List Block Devices)命令可以让你直观地看到系统中有哪些硬盘、这些硬盘被分成了哪些分区、分区的大小以及它们的挂载点。

lsblk

输出结果很形象,用树状结构表示:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 119.2G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 118.7G  0 part /
sdb      8:16   0 465.8G  0 disk
└─sdb1   8:17   0 465.8G  0 part /data

从上例可以看出:

  • 系统有两块硬盘:sda (约120G) 和 sdb (约466G)。
  • sda 被分成了两个区 sda1sda2,分别挂载在 /boot/efi/
  • sdb 只有一个分区 sdb1,挂载在 /data

总结与常用场景

命令 用途 常用组合 推荐指数
df 查看整个分区的剩余空间 df -h ⭐⭐⭐⭐⭐
du 查看特定目录的占用空间 du -sh <目录名> ⭐⭐⭐⭐⭐
du 找出哪个子目录占用空间最多 du -h --max-depth=1 <目录> | sort -hr ⭐⭐⭐⭐
lsblk 查看磁盘和分区结构 lsblk ⭐⭐⭐

快速入门

  • 想看硬盘还剩多少空间?用 df -h
  • 想看某个文件夹多大?用 du -sh <文件夹路径>
  • 想找哪个文件夹把硬盘占满了?用 du -h --max-depth=1 / | sort -hr