Linux下df命令查看磁盘使用详解
在Linux系统中,`df`命令是查看磁盘空间使用情况的利器。本文将深入解析`df`命令的各项功能与用法,助你快速了解磁盘总容量、已用空间、可用空间以及使用百分比。通过`-h`选项,`df`命令能以更易读的GB、MB等单位显示磁盘空间,`-T`选项则可显示文件系统类型,而`-i`选项用于检查inode使用情况。此外,本文还将阐述`df`命令与`du`命令的区别,并提醒在使用`df`命令时需注意的预留空间、未挂载分区以及瞬时快照等问题。最后,本文还将介绍如何结合`du`、`lsof`、`find`等命令,更有效地分析和管理磁盘空间,避免因日志文件过大、旧文件堆积等原因导致的磁盘空间不足问题。
df命令用于查看文件系统磁盘使用情况,加-h选项可读性强,-T显示文件系统类型,-i检查inode使用;df与du区别在于前者看文件系统整体空间,后者统计文件实际占用,二者差异常因已删除但被占用的文件导致;注意df显示的可用空间含root预留5%,且结果为瞬时快照,需结合du、lsof、find等命令综合分析和管理磁盘空间。
在Linux系统里,想知道你的硬盘空间还剩多少、哪些地方被占用了,最常用的、也是我个人觉得最直观的工具,非df
命令莫属。它能迅速概览所有已挂载文件系统的空间使用情况,包括总大小、已用、可用以及使用百分比,让你对磁盘状况一目了然。
说起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命令查看磁盘使用详解》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

- 上一篇
- 雅虎邮箱绑定其他邮箱步骤详解

- 下一篇
- Golang搭建gRPC服务:proto与代码生成教程
-
- 文章 · linux | 1小时前 |
- Linux安全远程连接:VPN与SSH配置技巧
- 167浏览 收藏
-
- 文章 · linux | 5小时前 |
- Linux内存管理技巧与回收方法
- 116浏览 收藏
-
- 文章 · linux | 9小时前 |
- Linux多网卡绑定与故障切换技巧
- 372浏览 收藏
-
- 文章 · linux | 18小时前 |
- Linux加密方法与工具全解析
- 167浏览 收藏
-
- 文章 · linux | 22小时前 |
- LinuxShell脚本入门与实战教程
- 168浏览 收藏
-
- 文章 · linux | 23小时前 |
- Linux网络接口配置与优化技巧
- 281浏览 收藏
-
- 文章 · linux | 1天前 |
- iftop与nload对比:Linux流量监控工具解析
- 122浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 514次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 499次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 1048次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 999次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 1033次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 1047次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 1026次使用
-
- 命令行工具:应对Linux服务器安全挑战的利器
- 2023-10-04 501浏览
-
- 如何使用Docker进行容器的水平伸缩和负载均衡
- 2023-11-07 501浏览
-
- linux .profile的作用是什么
- 2024-04-07 501浏览
-
- 如何解决s权限位引发postfix及crontab异常
- 2024-11-21 501浏览
-
- 如何通过脚本自动化Linux上的K8S安装
- 2025-02-17 501浏览