在Linux系统中,磁盘空间管理是日常运维的重要环节。无论是排查系统故障、清理冗余文件,还是规划存储空间,都需要先了解磁盘的使用情况。Ubuntu系统提供了两个常用工具:df 和 du,它们能帮助我们分别从整体分区和具体目录/文件的角度查看磁盘空间占用。
df命令:查看磁盘分区整体使用情况¶
df(Disk Free的缩写)用于显示整个磁盘分区的空间使用情况,包括总容量、已用空间、可用空间及使用率。
基本用法与参数¶
直接输入 df 会显示所有挂载分区的信息,但默认单位是字节(不直观),建议结合 -h 参数(人类可读格式,自动转换为KB/MB/GB):
df -h
常用参数:
- -h:以人类可读单位显示(如 1K → 1K,1.2G → 1.2G)
- -T:显示文件系统类型(如 ext4、xfs 等)
- -i:显示inode使用情况(inode是文件系统中记录文件元数据的“索引节点”,inode满了也会导致无法创建新文件)
输出结果解释¶
执行 df -h 后,输出示例如下:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 15G 4.8G 76% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/sdb1 50G 10G 40G 20% /home
- Filesystem:挂载的磁盘设备或文件系统(如
/dev/sda2是第一个磁盘的第二个分区)。 - Size:分区总容量。
- Used:已用空间。
- Avail:可用空间。
- Use%:磁盘使用率(超过85%建议清理)。
- Mounted on:挂载点(即该分区挂载到系统的哪个目录下,如
/是根目录,/home是用户目录)。
关键说明¶
- 挂载点:Linux系统通过“挂载”将磁盘分区与目录树关联。例如,
/home目录挂载在/dev/sdb1分区,所有用户文件默认存放在/home/用户名下。 - 特殊分区:
tmpfs是内存虚拟文件系统,无实际磁盘空间,可忽略其使用率。
du命令:查看具体目录/文件的空间占用¶
du(Disk Usage的缩写)用于显示指定目录或文件的详细磁盘占用情况,与 df 的区别是:df 关注分区整体,du 关注具体内容。
基本用法与参数¶
du 的基础语法为 du [选项] [目录/文件],常用参数:
- -h:人类可读单位(同 df -h)。
- -s:仅显示总和(不展开子目录)。
- -a:显示所有文件和目录(包括隐藏文件,默认不显示)。
- -c:在最后一行显示所有统计的总和。
- -sh:组合 -s(仅总和)和 -h(人类可读),适合快速查看目录总大小。
常用示例¶
- 查看单个目录总大小:
如查看/home目录的总占用:
du -sh /home
输出类似:2.5G /home(表示 /home 目录共占用2.5GB空间)。
- 查看目录下所有子目录大小:
如当前目录下各子目录的大小(不显示文件细节):
du -h --max-depth=1
--max-depth=1 仅显示一级子目录(不加则递归所有层级)。
- 显示目录下所有文件大小:
如查看/tmp目录下所有文件(含隐藏文件)的大小,并按降序排序:
du -ah /tmp | sort -hr | head -n 10
-a:显示所有文件(包括隐藏文件)。sort -hr:按大小降序排序(-h是人类可读排序)。head -n 10:取前10个最大文件。
- 查看文件具体大小:
如查看bigfile.txt的大小:
du -h bigfile.txt
df vs du:区别与使用场景¶
| 工具 | 作用范围 | 特点 | 典型场景 |
|---|---|---|---|
df |
磁盘分区整体 | 显示分区总容量、已用/可用空间,单位统一为分区容量 | 检查系统磁盘是否整体不足(如根分区 / 使用率超过85%) |
du |
目录/文件细节 | 显示指定目录或文件的具体占用,可深入子目录 | 定位大文件/目录(如清理缓存、日志文件) |
总结:磁盘空间管理步骤¶
- 检查整体分区:先用
df -h查看所有分区使用率,定位空间不足的分区(如/或/home)。 - 定位大目录:用
du -sh /path/to/dir查看目标分区下的大目录,再用du -h --max-depth=1 /path/to/dir逐层排查子目录。 - 清理冗余文件:对大目录(如
Downloads、apt缓存),可删除无用文件或归档备份。
通过 df 和 du 的组合使用,能高效管理磁盘空间,避免因空间不足导致系统异常。