首页 > 系统教程 > LINUX > 正文

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

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

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

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

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

AI-Text-Classifier
AI-Text-Classifier

OpenAI官方出品,可以区分人工智能书写的文本和人类书写的文本

AI-Text-Classifier 59
查看详情 AI-Text-Classifier

说起

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
登录后复制
清晰地了解当前磁盘的真实状况。

以上就是如何在Linux中查看磁盘使用情况?使用df命令检查磁盘空间占用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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