0

0

如何在Linux中查看磁盘使用情况?使用df命令检查磁盘空间占用

看不見的法師

看不見的法師

发布时间:2025-09-05 13:44:02

|

1129人浏览过

|

来源于php中文网

原创

df命令用于查看文件系统磁盘使用情况,加-h选项可读性强,-T显示文件系统类型,-i检查inode使用;df与du区别在于前者看文件系统整体空间,后者统计文件实际占用,二者差异常因已删除但被占用的文件导致;注意df显示的可用空间含root预留5%,且结果为瞬时快照,需结合du、lsof、find等命令综合分析和管理磁盘空间。

如何在linux中查看磁盘使用情况?使用df命令检查磁盘空间占用

在Linux系统里,想知道你的硬盘空间还剩多少、哪些地方被占用了,最常用的、也是我个人觉得最直观的工具,非

df
命令莫属。它能迅速概览所有已挂载文件系统的空间使用情况,包括总大小、已用、可用以及使用百分比,让你对磁盘状况一目了然。

稿定AI社区
稿定AI社区

在线AI创意灵感社区

下载

说起

df
命令,它的全称是 'disk free',顾名思义,就是告诉你磁盘的空闲情况。 最基础的用法,直接在终端敲入
df
,你就能看到一个表格。不过,默认输出的单位是KB,对我们人类来说,看那些大数字有点费劲。 所以,我通常会加上
-h
选项,也就是
df -h
。这个
-h
代表 'human-readable',它会自动把容量转换成GB、MB这种我们更容易理解的单位。这一下子就清晰多了,比如
/dev/sda1
挂载在
/
上,总共多少G,用了多少G,还剩多少G,用了百分之多少,一目了然。 有时候,你可能想知道某个特定目录或者文件系统的使用情况,比如只想看
/home
目录。你可以直接
df -h /home
。 另外一个我偶尔会用的选项是
-T
,它会显示文件系统的类型(Type),比如 ext4、xfs 等等。这对于排查一些文件系统相关的问题时很有用。 还有个
-i
选项,是查看 inode 使用情况的。虽然不是直接的磁盘空间,但文件系统除了存储数据,还需要存储文件的元数据,也就是 inode。如果 inode 用完了,即使磁盘空间还有,你也创建不了新文件。这在一些特殊场景下,比如小文件特别多的应用,就显得尤为重要了。 我记得有一次,服务器空间明明还有很多,但就是新建不了文件,查了半天,才发现是 inode 耗尽了,
df -i
帮了大忙。

df和du命令有什么区别

很多初学者,甚至一些有经验的用户,都会把

df
du
这两个命令搞混,或者说不清楚它们到底有什么区别。其实它们虽然都和磁盘空间有关,但关注点完全不同。
df
(disk free)关注的是文件系统的使用情况。它读取的是文件系统的元数据,告诉你整个文件系统层面的总容量、已用、可用空间。你可以把它想象成是看一个水库的总水量、已经用了多少、还能装多少。它报告的是实际挂载点上的空间占用。 而
du
(disk usage)关注的则是文件或目录的实际占用空间。它会递归地遍历指定目录下的所有文件和子目录,然后把它们的大小加起来。这就像是你去测量水库里每一艘船、每一块石头占了多少体积。
du
统计的是文件或目录实际占用的块大小,这可能会因为文件系统块大小、稀疏文件等原因,与
df
报告的总和略有差异。 举个例子,一个被删除但仍被进程占用的文件,
df
会认为这部分空间仍被占用(因为文件句柄还在),而
du
则不会计算它,因为它已经从文件系统中“消失”了。所以,当你发现
df
显示的空间占用和
du
对所有目录求和的结果不一致时,很可能就是有文件被删了但句柄没释放,或者有稀疏文件等特殊情况。理解这个差异,在排查磁盘空间问题时,能省不少力气。

df命令的常见陷阱和注意事项?

虽然

df
命令用起来简单,但我在实际使用中也遇到过一些“坑”,或者说需要注意的地方。 一个常见的误解是,
df
报告的“可用空间”并不总是你能完全利用的空间。Linux文件系统(比如ext4)默认会预留一部分(通常是5%)空间给root用户,目的是为了防止磁盘被完全写满后系统无法正常运行,或者root用户无法登录进行维护。所以,如果你看到可用空间还有1GB,但普通用户却写不进去一个1GB的文件,别惊讶,那5%的预留空间可能就是原因。你可以用
tune2fs -l /dev/sda1 | grep 'Reserved block count'
来查看预留块,甚至用
tune2fs -r 0 /dev/sda1
来取消预留(不推荐在生产环境随意操作)。 再就是,
df
只显示已挂载的文件系统。如果你有未挂载的分区或者裸设备,
df
是看不到它们的。这时候你需要
fdisk -l
或者
lsblk
来查看物理设备布局。 还有一点,
df
的结果是瞬时快照。如果你的系统正在进行大量的写入或删除操作,
df
的结果可能在短时间内就变得不准确。特别是当有大文件被删除,但文件句柄仍被某个进程占用时,
df
会继续显示这部分空间已被占用,直到进程释放文件句柄或者重启。遇到这种情况,
lsof | grep deleted
可能会帮你找到“元凶”。这可是我排查过好几次生产环境问题才总结出来的经验。

如何结合其他命令更有效地管理磁盘空间?

光会看

df
输出还不够,真正的磁盘空间管理,往往需要组合拳。 首先,当你通过
df -h
发现某个分区空间告急时,下一步通常是找出是哪个目录或文件占用了大量空间。这时候,
du -sh *
在可疑目录下就派上用场了。
du -sh *
会列出当前目录下所有文件和子目录的总大小,
-s
是summary,
-h
是human-readable。我经常会用
du -sh * | sort -rh | head -n 10
来快速找出前十大占用空间的文件或目录,这比漫无目的地一个个查看高效多了。 如果发现是日志文件(比如
/var/log
)过大,你可以考虑配置日志轮转(logrotate),让系统自动压缩、归档或删除旧日志。这是一个非常重要的系统维护习惯,能有效避免日志文件无限膨胀。 另外,对于那些你不再需要的旧文件、临时文件或者下载包,及时清理也是关键。
find /path/to/search -type f -mtime +30 -delete
这样的命令可以帮你清理30天前修改过的文件。但操作
rm
delete
时务必小心,确认无误再执行,一个不小心可能就删掉重要数据了。我个人建议先用
find ... -exec echo {} \;
预览一下要删除的文件列表,确认后再替换成
rm
-delete
。 最后,如果磁盘空间实在不够,而又不能轻易删除文件,那么考虑扩容或者迁移数据就是不得不走的一步了。这通常涉及到更复杂的LVM操作或者云存储的弹性伸缩。但这一切的前提,都是你得先通过
df
du
清晰地了解当前磁盘的真实状况。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.11.20

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

386

2023.09.04

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

210

2023.12.29

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

703

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

10

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号