Linux df 命令(超详细)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观


在 Linux 系统中,磁盘空间管理是系统管理员和开发者必须掌握的基础技能之一。而 Linux df 命令 就像一位“磁盘空间体检师”,能快速展示系统中各个分区的容量、已用空间、可用空间等关键信息。无论是排查磁盘不足问题,还是优化存储资源分配,df 命令都是开发者日常工作中不可或缺的工具。本文将从基础用法到进阶技巧,结合实际案例,深入浅出地讲解这一命令的使用方法。


一、df 命令的核心功能与基本语法

1.1 命令的定义与核心作用

dfdisk 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% 时,可采取以下措施:

  1. 清理临时文件:删除 /tmp/var/tmp 下的无用文件。
  2. 压缩日志文件:使用 gzip 压缩旧日志。
  3. 扩展磁盘空间:通过 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 命令内化为日常开发与运维的得力工具,为更复杂的系统管理任务打下坚实基础。

最新发布