Linux df 命令(超详细)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
在 Linux 系统中,磁盘空间管理是系统管理员和开发者必须掌握的基础技能之一。而 Linux df 命令 就像一位“磁盘空间体检师”,能快速展示系统中各个分区的容量、已用空间、可用空间等关键信息。无论是排查磁盘不足问题,还是优化存储资源分配,df 命令都是开发者日常工作中不可或缺的工具。本文将从基础用法到进阶技巧,结合实际案例,深入浅出地讲解这一命令的使用方法。
一、df 命令的核心功能与基本语法
1.1 命令的定义与核心作用
df
是 disk free 的缩写,其核心功能是显示文件系统的磁盘空间使用情况。通过执行 df
命令,用户可以快速获取以下信息:
- 每个挂载点(Mount Point)的总容量
- 已用空间与可用空间
- 空间使用率百分比
- 文件系统类型(如 ext4、xfs 等)
例如,执行基础命令 df
后,终端会输出类似以下表格:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 8123292 832 8122460 1% /dev
tmpfs 1627680 12345 1615335 1% /run
/dev/sda1 243215120 123456789 123456789 50% /
tmpfs 8138392 123456 8014936 2% /dev/shm
1.2 基础语法与输出解析
基础语法:
df [选项] [文件或目录]
若不带参数执行 df
,默认会列出所有挂载的文件系统信息。输出表格的每一列含义如下:
- Filesystem:设备名或文件系统标识(如
/dev/sda1
)。 - 1K-blocks:以 1KB 为单位的总容量。
- Used:已用空间(单位同上)。
- Available:可用空间(单位同上)。
- Use%:使用率百分比。
- Mounted on:挂载点路径(如
/
,/home
)。
1.3 类比理解:磁盘空间的“体检报告”
想象 df 命令是一份磁盘空间的体检报告:
- 总容量对应体检报告中的“身高体重”指标,显示系统硬件的基本参数。
- 已用/可用空间类似“胆固醇”或“血压”数据,反映当前资源的健康状态。
- 使用率百分比则是医生的诊断结论,提示是否需要进一步处理(如扩容或清理)。
二、常用参数详解与实战案例
2.1 参数 -h
:以人性化单位显示
默认情况下,df
的输出单位是 1KB,这对用户理解不够直观。通过 -h
参数(human-readable),可以将单位转换为更易读的 KB、MB、GB 等。
示例:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 832K 7.8G 1% /dev
tmpfs 1.6G 12M 1.6G 1% /run
/dev/sda1 232G 117G 115G 51% /
2.2 参数 -T
:查看文件系统类型
-T
参数会额外显示文件系统类型,这对排查兼容性问题或优化存储策略很有帮助。
示例:
df -Th
输出示例:
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 7.8G 832K 7.8G 1% /dev
tmpfs tmpfs 1.6G 12M 1.6G 1% /run
/dev/sda1 ext4 232G 117G 115G 51% /
2.3 参数 -i
:监控 inode 使用情况
除了磁盘空间,-i
参数可以查看文件系统的 inode 使用情况。inode 是文件系统的元数据,记录文件权限、时间戳、指向数据块的指针等信息。当 inode 空间耗尽时,即使磁盘空间充足,也无法创建新文件。
示例:
df -i /home
输出示例:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 15M 5M 10M 33% /
2.4 参数 --output
:自定义输出列
通过 --output
参数,可以按需选择需要显示的列。例如,只显示挂载点、使用率和可用空间:
示例:
df --output=target,pcent,avail
输出示例:
Mounted on Use% Avail
/ 51% 115G
/home 45% 200G
三、进阶用法与实战场景
3.1 结合 grep
等工具过滤信息
若需关注特定分区或目录的磁盘使用情况,可结合 grep
命令进行过滤。例如,查看根目录 /
的磁盘使用率:
df -h | grep '/$'
输出示例:
/dev/sda1 232G 117G 115G 51% /
3.2 监控磁盘空间变化
通过 watch
命令,可以实时监控磁盘空间的变化。例如,每 2 秒刷新一次根目录的磁盘使用情况:
watch -n 2 "df -h /"
3.3 自动清理磁盘空间的脚本示例
当磁盘空间不足时,可以编写脚本自动清理日志文件。例如,删除 /var/log
下 7 天前的日志文件:
#!/bin/bash
if [ $(df / | awk '{print $5}' | tail -n1 | sed 's/%//') -gt 90 ]; then
find /var/log -type f -mtime +7 -exec rm -f {} \;
echo "日志清理完成"
else
echo "磁盘空间充足"
fi
四、常见问题与解决方案
4.1 磁盘空间显示异常
若发现 df
显示的可用空间与实际不符,可能是由于被删除但仍在运行的进程占用了文件。此时可用 lsof
命令查找占用文件的进程:
lsof +L1
4.2 处理磁盘空间不足
当磁盘使用率接近 100% 时,可采取以下措施:
- 清理临时文件:删除
/tmp
或/var/tmp
下的无用文件。 - 压缩日志文件:使用
gzip
压缩旧日志。 - 扩展磁盘空间:通过 LVM(逻辑卷管理)扩容或挂载新磁盘。
五、与其他命令的协同使用
5.1 结合 du
命令定位大文件
df
展示整体空间,而 du
(disk usage)可分析具体目录或文件的占用情况。例如,查看 /var
目录下占用最大的前 10 个文件:
du -ah /var | sort -rh | head -n 10
5.2 生成磁盘使用报告
通过重定向和文本处理,可将 df
的输出格式化为报告:
df -h | awk 'NR==1 || $NF=="/home"' > disk_report.txt
六、最佳实践与注意事项
6.1 定期监控磁盘健康
通过 smartctl
工具(需安装 smartmontools
)检查磁盘硬件状态:
sudo smartctl -a /dev/sda | grep -i 'health'
6.2 避免根目录空间耗尽
建议将日志、缓存等目录挂载到独立分区,避免根目录因单个文件或目录膨胀而崩溃。
结论
Linux df 命令是系统管理中的一把“瑞士军刀”,它不仅能帮助开发者实时掌握磁盘空间状态,还能与其他工具协同完成复杂任务。无论是排查空间不足问题,还是优化存储策略,理解并熟练使用 df
命令都是提升系统运维效率的关键。建议读者通过实际操作加深记忆,并结合具体场景灵活运用其参数与功能。
通过本文的学习,希望读者能将 df
命令内化为日常开发与运维的得力工具,为更复杂的系统管理任务打下坚实基础。