df命令用于查看文件系统整体使用情况,显示各挂载点的总容量、已用空间和可用空间,适合快速判断哪个分区快满;2. du命令用于统计具体文件或目录的磁盘占用,可深入目录结构定位大文件或占用最多的目录;3. 两者结果不一致时,常见原因为文件被删除但仍在被进程占用,此时df显示的空间包含该“隐藏”占用,而du无法统计已删除文件;4. 解决方法为使用lsof +l1查找并终止相关进程或重启服务释放空间;5. 使用du时若遇权限问题,应使用sudo提权确保统计完整;6. 日常运维中应先用df -h查看整体情况,再用du -sh或du -h --max-depth=1定位具体占用,结合二者可高效排查磁盘空间问题。
在Linux系统中,查看磁盘空间使用情况是日常运维和系统管理中的基本操作。
df和
du是两个最常用的命令,虽然它们都与磁盘空间相关,但用途和输出结果有明显区别。下面详细对比这两个命令的使用方法和适用场景。
df(disk filesystem)命令用于显示文件系统的磁盘使用情况,包括总容量、已用空间、可用空间和挂载点等。
常用选项:
-h:以人类可读的方式显示(如 KB、MB、GB)
-T:显示文件系统类型
-i:查看 inode 使用情况
示例:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 20G 28G 42% / tmpfs 3.2G 0 3.2G 0% /dev/shm /dev/sdb1 100G 80G 15G 85% /data
特点:
不深入目录结构,适合快速查看各分区使用率du(disk usage)命令用于统计指定文件或目录的磁盘使用情况,可以深入到具体目录查看谁占用了空间。
常用选项:
-h:人类可读格式
-s:只显示总计(不列出子目录)
--max-depth=N:限制显示的目录层级
-a:显示所有文件(包括文件和目录)
示例:
du -sh /home
输出示例:
15G /home
查看
/var下各子目录的使用情况:
du -h --max-depth=1 /var
输出示例:
1.2G /var/log 8.5G /var/lib 100M /var/cache 9.8G /var
特点:
| 对比项 | df 命令 | du 命令 |
|---|---|---|
| 统计对象 | 文件系统整体 | 具体文件或目录 |
| 单位 | 按分区/挂载点显示 | 按目录或文件递归统计 |
| 常见用途 | 查看哪个分区快满了 | 查找大文件或占用空间的目录 |
| 是否受已删除但未释放的文件影响 | 是(已删除文件若被进程占用,df仍显示占用) | 否(只统计实际存在的文件) |
| 输出简洁性 | 简洁,适合快速查看 | 可详细可汇总,灵活但可能输出较多 |
df 和 du 结果不一致?
lsof +L1
或重启相关进程释放空间。
df 显示空间不足,但 du 统计总和不大?
权限问题
du遍历目录时,若无权限访问某些子目录,会报错或统计不全。
sudo提权查看:
sudo du -sh /var
df -h快速查看各分区使用情况,判断是否磁盘满。
du -sh 目录或
du -h --max-depth=1 目录查找具体哪个目录占空间多。
基本上就这些。掌握这两个命令的差异和配合使用,能高效解决大多数磁盘空间问题。