Linux磁盘爆满?df -h秒查空间!

df -h命令可查看Linux磁盘空间使用情况,并以人性化单位(如GB/MB)显示结果,便于快速掌握磁盘状态。

在 Linux 或 Unix 系统管理中,及时了解磁盘空间的使用情况至关重要。df(Disk Free)命令是完成这项任务的核心工具,而 df -h 则是其最常用、最用户友好的形式,它能以人类可读的格式(如 GB、MB)清晰展示文件系统的磁盘空间总量、已用量和剩余量。

命令作用与核心价值

  • 核心功能: 报告文件系统的磁盘空间使用情况。
  • -h 参数的意义: -h--human-readable 选项让命令的输出结果自动转换单位(Bytes, KB, MB, GB, TB),避免显示一长串难以直观理解的字节数字,极大提升可读性。
  • 核心价值: 快速诊断磁盘空间不足问题,监控存储资源消耗,为系统维护、日志清理、数据迁移等操作提供关键依据。

基本用法与输出解读

直接在终端输入命令:

df -h

典型输出示例:

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           787M  1.7M  785M   1% /run
/dev/nvme0n1p2  234G   89G  134G  40% /
tmpfs           3.9G   98M  3.8G   3% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
/dev/nvme0n1p1  511M  6.1M  505M   2% /boot/efi
tmpfs           787M   88K  787M   1% /run/user/1000

逐列解读输出结果:

  1. Filesystem 显示磁盘分区或存储设备的名称(如 /dev/nvme0n1p2)或特殊文件系统(如 tmpfs, udev)。
  2. Size 该文件系统总容量-h 使其显示为 GB/MB 等)。
  3. Used 该文件系统已使用的空间
  4. Avail 普通用户可用的剩余空间(通常考虑了为 root 保留的空间)。
  5. Use% 已用空间占总容量的百分比,这是快速判断空间紧张程度的关键指标(如 90%+ 通常需要关注)。
  6. Mounted on 该文件系统在目录树中的挂载点(即你访问该磁盘空间的路径,如根目录 、/boot/efi 等)。

常用参数组合与场景

df -h 可以与其他参数结合,满足更具体的需求:

  1. 查看特定文件系统/目录:

    df -h /home  # 查看 /home 目录所在分区的空间
    df -h /dev/nvme0n1p1  # 查看指定设备(如 /dev/nvme0n1p1)的空间
  2. 显示文件系统类型 (-T):

    df -hT

    输出增加 Type 列: 显示文件系统类型(如 ext4, xfs, btrfs, tmpfs, vfat 等),有助于了解存储格式。

  3. 排除特定文件系统类型 (-x):

    df -h -x tmpfs  # 排除所有 tmpfs 类型(内存文件系统)的显示
    df -h -x squashfs -x tmpfs  # 排除多种类型

    常用于过滤掉不关心的临时或虚拟文件系统,聚焦物理磁盘。

  4. 仅显示本地文件系统 (-l):

    df -hl

    排除网络文件系统(NFS, SMB/CIFS 等),只显示本地连接的磁盘。

  5. 显示 inode 使用情况 (-i):

    df -hi  # 结合 -h 显示可读格式

    输出变化: Size, Used, Avail, Use% 列变为 inode 的数量信息(而非磁盘空间),当磁盘空间充足但系统提示“No space left on device”时,很可能是 inode 耗尽(常见于存储大量小文件的场景)。

高级技巧与注意事项

  1. 理解 Avail vs Free

    • df 显示的 Avail (Available) 是普通用户实际可用的空间
    • 文件系统通常会为 root 用户保留一部分空间(通常是 5%),这部分空间包含在 Used 中,但不计入 AvailFree 空间(未在 df -h 中直接显示)是 Size - Used 的总剩余,包含了 root 保留空间。Avail <= Free
  2. 处理“stale file handle”错误:
    如果挂载点失效或 NFS 出现问题,df 可能卡住或报此错,使用 -l 排除网络文件系统或检查挂载状态 (mount 命令) 通常能解决。

  3. --output 选项 (较新版本):
    允许自定义输出列,提供更灵活的报告:

    df -h --output=source,fstype,size,used,avail,pcent,target
    # source(设备), fstype(类型), size, used, avail, pcent(使用%), target(挂载点)
  4. du 命令区分:

    • df 报告整个文件系统/分区的磁盘使用情况。
    • du 报告特定目录或文件占用的磁盘空间,两者用途不同,常结合使用(如 df -h 发现某分区快满了,再用 du -sh * 进入该分区查找大文件/目录)。

最佳实践建议

  1. 定期检查:df -h 纳入日常系统监控脚本或手动检查流程。
  2. 关注关键分区: 重点监控根目录 ()、/var(日志)、/home(用户数据)、数据库目录等易增长的分区。
  3. 结合 Use%Avail 百分比高 (>80%) 或 Avail 绝对值低(如 <10GB)都是需要清理或扩容的信号。
  4. 警惕 inode 耗尽: df -hi 显示 Use% 接近 100%,即使空间充足,也需要删除文件或扩充分区以增加 inode 数量。
  5. 理解输出来源: 明确 df 报告的是挂载点级别的信息,一个物理磁盘的不同分区会显示为不同的行。

df -h 是 Linux/Unix 系统管理员和开发者必备的、用于快速评估磁盘空间健康状况的基石命令,其简洁的输出(得益于 -h 选项)和丰富的信息(总量、已用、可用、使用率、挂载点)使其成为排查磁盘空间问题的首选工具,掌握其基本用法、输出解读以及常用参数组合(如 -hT, -hi, -l),将极大提升你管理服务器或开发环境的效率,养成定期运行 df -h 的习惯,是预防磁盘空间危机的有效手段。


引用说明:

  • 基于 GNU coreutilsdf 命令的官方文档 (info coreutils 'df invocation'man df)。
  • 文件系统行为(如 root 保留空间、inode 概念)参考了 The Linux Kernel Documentation 及相关文件系统(如 ext4, XFS)的规范。
  • 最佳实践部分综合了广泛的系统管理社区经验(如 Server Fault, Unix & Linux Stack Exchange)和行业标准运维指南。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9097.html

(0)
酷番叔酷番叔
上一篇 2025年7月28日 22:56
下一篇 2025年7月28日 23:30

相关推荐

  • 安全数据检测到异常,该如何有效处理?

    安全数据检测到异常是日常运营中不可避免的情况,但如何科学、高效地处理这些异常,直接关系到系统的稳定性和数据的安全性,面对异常,既不能掉以轻心,也不应过度反应,需遵循系统化流程,确保问题得到妥善解决,第一步:保持冷静,快速隔离发现异常数据后,首要任务是避免风险扩散,应立即采取隔离措施,比如断开异常设备的网络连接……

    2025年11月15日
    7200
  • ADB常用命令与路径怎么用?

    ADB是Android调试桥工具,核心命令包括devices、install、logcat等,用于设备连接、应用安装、日志抓取,使用需开启设备USB调试并通过环境变量配置ADB路径。

    2025年8月6日
    11800
  • 在数字化浪潮下,安全信息管理如何实现技术防护与流程优化的协同?

    安全信息管理(Security Information Management,SIM)作为组织安全体系的核心支撑,是通过系统化收集、整合、分析及应用安全相关数据,实现风险可视、威胁可防、事件可控的综合性管理过程,在数字化浪潮下,数据成为关键生产要素,安全信息管理已从“可有可无”的辅助工具,升级为保障业务连续性……

    2025年11月18日
    8700
  • 如何制定安全数据备份的关键策略与风险防范措施?

    在数字化时代,数据已成为个人与组织的核心资产,从个人照片、工作文档到企业客户信息、财务数据,一旦因硬件故障、人为误操作、勒索软件攻击或自然灾害导致丢失,可能造成难以估量的损失,安全数据备份作为数据保护的最后一道防线,不仅是技术问题,更是关乎业务连续性与风险管控的关键环节,安全数据备份的核心价值安全数据备份的核心……

    2025年11月9日
    15000
  • PHP中如何安全执行系统命令?

    PHP执行系统命令的5种核心函数exec()执行命令并返回最后一行输出:$output = [];$lastLine = exec('dir C:\', $output, $returnCode);print_r($output); // 输出所有行echo "返回值: $return……

    2025年7月31日
    12200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信