news 2026/4/26 22:39:14

【Linux命令大全】007.磁盘管理之df命令(实操篇)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux命令大全】007.磁盘管理之df命令(实操篇)

【Linux命令大全】007.磁盘管理之df命令(实操篇)

✨ 本文为Linux系统磁盘管理命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】007.磁盘管理之df命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 查看所有文件系统的使用情况
      • 2. 查看特定设备的使用情况
      • 3. 查看文件系统类型
      • 4. 查看 inode 使用情况
      • 5. 查看挂载点信息
      • 6. 结合 grep 过滤输出
    • 三、高级用法
      • 1. 检查磁盘空间是否接近满盘
      • 2. 监控磁盘空间变化
      • 3. 创建磁盘空间监控脚本
      • 4. 查找占用空间最多的目录和文件
      • 5. 结合其他命令分析磁盘使用情况
      • 6. 监控网络文件系统的使用情况
    • 四、实用技巧与常见问题
      • 实用技巧
      • 常见问题
    • 五、总结

一、功能与作用

df命令(Disk Free)是Linux系统中用于显示文件系统的磁盘使用情况的重要工具。它可以提供有关已挂载文件系统的总空间、已用空间、可用空间和挂载点等关键信息,是系统管理员监控存储资源、识别磁盘空间不足问题的核心工具。df命令能够帮助管理员及时发现潜在的磁盘空间危机,进行合理的存储规划和清理工作。

参数详解

参数说明
-h以人类可读格式显示(如 KB、MB、GB)
-T显示文件系统类型
-i显示 inode 使用情况
-P以 POSIX 格式输出

二、基本用法

1. 查看所有文件系统的使用情况

使用df -h命令可以以人类可读的格式查看所有已挂载文件系统的使用情况:

# 查看所有文件系统的使用情况(人类可读格式)df-h# 输出示例:# 文件系统 容量 已用 可用 已用% 挂载点# /dev/sda1 20G 5.2G 14G 28% /# tmpfs 1.9G 0 1.9G 0% /dev/shm# /dev/sdb1 100G 65G 35G 65% /home# //server/share 500G 200G 300G 40% /mnt/network# -h参数使输出以KB、MB、GB等易读的单位显示,而不是原始的字节数

2. 查看特定设备的使用情况

可以指定设备路径来查看特定设备的使用情况:

# 查看特定设备的使用情况df-h /dev/sda1# 输出示例:# 文件系统 容量 已用 可用 已用% 挂载点# /dev/sda1 20G 5.2G 14G 28% /# 这种方法可以快速查看关键分区的使用情况

3. 查看文件系统类型

使用-T参数可以显示文件系统的类型信息:

# 查看文件系统类型df-T /# 输出示例:# 文件系统 类型 容量 已用 可用 已用% 挂载点# /dev/sda1 ext4 20G 5.2G 14G 28% /# 常见的文件系统类型有ext2、ext3、ext4、xfs、btrfs、ntfs、fat32等

4. 查看 inode 使用情况

在Linux系统中,每个文件和目录都需要一个inode来存储元数据。使用-i参数可以查看inode的使用情况:

# 查看 inode 使用情况df-i# 输出示例:# 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点# /dev/sda1 128000 12500 115500 10% /# tmpfs 483200 1 483199 1% /dev/shm# /dev/sdb1 6553600 234000 6319600 4% /home# 注意:即使磁盘空间充足,如果inode用尽,也无法创建新文件

5. 查看挂载点信息

使用-P参数可以以POSIX格式输出挂载点信息,这在脚本中处理输出时非常有用:

# 以POSIX格式输出挂载点信息df-P# 输出示例(每行格式统一,便于脚本解析):# Filesystem 1024-blocks Used Available Capacity Mounted on# /dev/sda1 20480000 5324800 13955200 28% /# tmpfs 1932800 0 1932800 0% /dev/shm# /dev/sdb1 102400000 67584000 34816000 65% /home

6. 结合 grep 过滤输出

可以结合grep命令过滤df的输出,只显示特定的文件系统:

# 过滤特定挂载点的信息df-h|grep"/home"# 输出示例:# /dev/sdb1 100G 65G 35G 65% /home# 过滤网络文件系统df-h|grep"//"# 过滤特定类型的文件系统df-T|grep"ext4"

三、高级用法

1. 检查磁盘空间是否接近满盘

可以使用awk命令结合df命令来检查哪些文件系统的使用率超过了某个阈值(例如80%):

# 检查使用率超过80%的文件系统df-h|awk'$5 > 80 {print $1, $5}'# 输出示例(如果有超过阈值的文件系统):# /dev/sdb1 85%# /dev/sdc1 90%# 这个命令在系统监控和自动化维护脚本中非常有用

2. 监控磁盘空间变化

可以结合watch命令实时监控磁盘空间的变化:

# 每5秒更新一次磁盘空间信息watch-n5df-h# 输出会每5秒更新一次,直到按Ctrl+C停止# 也可以监控特定的文件系统watch-n2"df -h | grep '/home'"# 这种方法对于监控正在进行的大文件传输或备份操作非常有用

3. 创建磁盘空间监控脚本

可以创建一个简单的脚本,定期检查磁盘空间并在空间不足时发出警告:

# 创建磁盘空间监控脚本cat>disk_monitor.sh<<'EOF' #!/bin/bash # 设置磁盘使用率阈值(百分比) THRESHOLD=90 # 设置日志文件 LOG_FILE="/var/log/disk_usage.log" # 检查是否以root权限运行 if [ "$EUID" -ne 0 ] then echo "请以root权限运行此脚本" exit 1 fi # 创建日志文件(如果不存在) touch $LOG_FILE chmod 600 $LOG_FILE # 记录监控开始时间 echo "[$(date '+%Y-%m-%d %H:%M:%S')] 磁盘空间监控已启动,阈值: ${THRESHOLD}%" >> $LOG_FILE # 获取所有文件系统的使用情况 df -P | grep -v 'Filesystem' | while read line do # 提取文件系统信息 filesystem=$(echo $line | awk '{print $1}') mount_point=$(echo $line | awk '{print $6}') usage=$(echo $line | awk '{print $5}' | sed 's/%//g') # 检查使用率是否超过阈值 if [ $usage -gt $THRESHOLD ] then # 磁盘空间不足,记录到日志 echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARNING: 磁盘空间不足 - 文件系统: $filesystem, 挂载点: $mount_point, 使用率: ${usage}%" >> $LOG_FILE # 可以添加发送邮件或其他通知的命令 # echo "磁盘空间不足: $mount_point 使用率 ${usage}%" | mail -s "磁盘空间警告" admin@example.com else # 磁盘空间正常,记录简要信息 echo "[$(date '+%Y-%m-%d %H:%M:%S')] INFO: 磁盘空间正常 - 文件系统: $filesystem, 挂载点: $mount_point, 使用率: ${usage}%" >> $LOG_FILE fi done # 可以将此脚本添加到cron作业,定期执行 # 0 * * * * /path/to/disk_monitor.sh # 每小时执行一次 EOF# 使脚本可执行chmod+x disk_monitor.sh# 手动执行一次sudo./disk_monitor.sh# 查看日志内容tail-f /var/log/disk_usage.log

4. 查找占用空间最多的目录和文件

df命令可以与du命令结合使用,找出占用空间最多的目录和文件:

# 首先使用df命令找出使用率最高的文件系统df-h|sort-k5 -r|head-5# 然后使用du命令深入分析该文件系统du-h --max-depth=1/path/to/filesystem|sort-hr|head-10# 例如,分析/home目录:du-h --max-depth=1/home|sort-hr|head-10# 继续深入分析占用空间最多的目录du-h --max-depth=1/home/user/Documents|sort-hr|head-10# 这种方法可以快速定位占用大量磁盘空间的目录和文件

5. 结合其他命令分析磁盘使用情况

df命令可以与其他Linux命令结合使用,进行更深入的磁盘使用分析:

# 显示所有文件系统的详细信息(包括类型、挂载选项等)forfsin$(df-P|grep-v'Filesystem'|awk'{print $1}');doecho" 文件系统:$fs"echo"挂载点:$(df-P|grep$fs|awk'{print $6}')"echo"使用率:$(df-P|grep$fs|awk'{print $5}')"echo"类型:$(df-T|grep$fs|awk'{print $2}')"echo"挂载选项:$(cat/proc/mounts|grep$fs|awk'{$1=$2=$3=""; print $0}')"done# 查找未挂载的分区lsblk -o NAME,SIZE,TYPE,MOUNTPOINT|grep-v'MOUNTPOINT'# 查看磁盘I/O性能(结合iostat命令)iostat -x15# 这些组合命令可以提供更全面的磁盘使用和性能信息

6. 监控网络文件系统的使用情况

对于挂载的网络文件系统(如NFS、CIFS等),可以使用df命令监控其使用情况:

# 查看所有网络文件系统的使用情况df-h -T|grep-E"nfs|cifs"# 输出示例:# //server/share cifs 500G 200G 300G 40% /mnt/network# 192.168.1.100:/data nfs4 1.5T 800G 700G 53% /mnt/nfs# 监控网络文件系统的响应时间# 使用time命令测量df命令的执行时间timedf-h /mnt/network# 如果执行时间过长,可能表明网络连接有问题

四、实用技巧与常见问题

实用技巧

  1. 理解df命令输出的各个字段

    # df命令输出字段解释echo"df命令输出字段解释:"echo"Filesystem: 文件系统的名称或设备路径"echo"Size: 总空间大小"echo"Used: 已使用的空间"echo"Avail: 可用空间"echo"Use%: 使用率"echo"Mounted on: 挂载点"# 注意:在一些系统上,已用空间和可用空间之和可能小于总空间,这是因为部分空间被保留给root用户使用
  2. 使用别名简化常用的df命令

    # 在~/.bashrc中添加别名echo"alias dfh='df -h'">>~/.bashrc# 人类可读格式echo"alias dfi='df -i'">>~/.bashrc# 显示inode信息echo"alias dft='df -h -T'">>~/.bashrc# 显示类型和人类可读格式echo"alias dfw='watch -n 5 df -h'">>~/.bashrc# 实时监控# 重新加载配置source~/.bashrc# 现在可以使用这些别名快速执行常用的df命令dfh dfi dft dfw
  3. 识别磁盘空间不足的原因

    # 当df命令显示某个分区空间不足时,可以使用以下命令查找原因# 1. 查找大文件(大于100MB的文件)find/path/to/mountpoint -type f -size +100M -execdu-h{}\;# 2. 查找最近修改的大文件find/path/to/mountpoint -type f -size +50M -mtime -7 -execdu-h{}\;# 3. 查找占用空间最多的前10个目录du-h --max-depth=1/path/to/mountpoint|sort-hr|head-10# 4. 检查日志文件大小du-h /var/log/*|sort-hr|head-10# 这些命令可以帮助快速定位占用大量磁盘空间的文件和目录
  4. 清理磁盘空间的方法

    # 当磁盘空间不足时,可以使用以下方法清理空间# 1. 清理包缓存(适用于Debian/Ubuntu)sudoapt-getclean# 2. 清理旧的内核文件(注意不要删除正在使用的内核)sudoapt-getautoremove --purge# 3. 清理临时文件sudorm-rf /tmp/*sudorm-rf /var/tmp/*# 4. 清理日志文件sudotruncate -s0/var/log/*.log# 5. 查找并删除孤儿文件(未被任何包管理的文件)# 可以使用deborphan等工具# 注意:清理磁盘空间时请小心,避免删除重要文件
  5. 使用df命令检查文件系统健康状态

    # df命令可以间接反映文件系统的健康状态# 1. 检查inode使用率是否过高df-i|awk'$5 > 90 {print "警告: inode使用率过高 - " $1 " " $5}'# 2. 检查是否有只读挂载的文件系统(可能表明文件系统有问题)mount|grep'ro,'# 3. 检查磁盘空间是否快速减少# 使用watch命令监控一段时间watch-n60df-h# 如果发现异常情况,应该进一步检查文件系统的健康状态

常见问题

  1. df命令显示的已用空间与实际不符

    # 有时df命令显示的已用空间可能与du命令的结果不一致# 这通常是因为有已删除的文件仍被进程占用# 解决方法:查找被删除但仍被占用的文件lsof|grepdeleted# 找到占用大文件的进程后,可以重启该进程或等待其正常退出# 也可以使用以下命令释放被占用的空间(需要知道文件描述符)# echo > /proc/PID/fd/FILE_DESCRIPTOR
  2. 无法挂载新的文件系统

    # 如果尝试挂载新的文件系统失败,可能是因为磁盘空间不足或挂载点不存在# 解决方法:# 1. 检查挂载点是否存在mkdir-p /mnt/new_mount# 2. 检查磁盘空间是否足够df-h# 3. 检查文件系统是否损坏fsck/dev/sdb1# 注意:检查前请卸载文件系统# 4. 检查挂载选项是否正确mount-t ext4 -o defaults /dev/sdb1 /mnt/new_mount
  3. inode用尽导致无法创建文件

    # 即使磁盘空间充足,如果inode用尽,也无法创建新文件# 使用df -i命令检查inode使用情况df-i# 解决方法:# 1. 查找大量小文件的目录find/path/to/mountpoint -type f|wc-l# 2. 删除不需要的小文件# 3. 或者重新格式化分区,增加inode数量(需要备份数据)
  4. df命令执行缓慢

    # 如果df命令执行缓慢,可能是因为挂载了大量远程文件系统或有故障的存储设备# 解决方法:# 1. 检查网络连接状态(如果使用了网络文件系统)pingserver_ip# 2. 检查存储设备状态dmesg|grep-i error# 3. 可以使用df命令的某些选项来加速执行df-h -l# 只显示本地文件系统
  5. df命令显示文件系统使用率为100%,但实际未使用这么多空间

    # 这通常是因为Linux系统默认保留了一部分空间给root用户使用# 默认情况下,ext文件系统会保留5%的空间给root用户# 检查保留空间大小tune2fs -l /dev/sda1|grep'Reserved block count'# 调整保留空间比例(例如,减少到1%)sudotune2fs -m1/dev/sda1# 注意:调整保留空间可能会影响文件系统的性能和稳定性,特别是在磁盘空间接近满的情况下

五、总结

df命令是Linux系统中用于监控磁盘空间使用情况的重要工具,它提供了丰富的信息,包括文件系统的总空间、已用空间、可用空间和挂载点等。通过本文的详细介绍和实例,相信您已经掌握了df命令的基本用法和高级技巧,包括如何以不同格式显示磁盘使用情况、如何监控磁盘空间变化、如何分析磁盘使用趋势等。同时,我们也介绍了一些实用技巧和常见问题的解决方法,帮助您在使用df命令时更加得心应手。

无论是系统监控、性能调优还是故障排查,df命令都是一个不可或缺的工具。通过定期使用df命令检查磁盘空间使用情况,可以及时发现潜在的问题,避免因磁盘空间不足导致的系统故障。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 10:25:11

go2rtc 高效部署指南:零门槛构建全能流媒体服务

go2rtc 高效部署指南&#xff1a;零门槛构建全能流媒体服务 【免费下载链接】go2rtc Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc. 项目地址: https://gitcode.com/GitHub_Trending/go/g…

作者头像 李华
网站建设 2026/4/16 16:44:52

揭秘mcp-clickhouse:如何通过实时分析实现高效数据交互

揭秘mcp-clickhouse&#xff1a;如何通过实时分析实现高效数据交互 【免费下载链接】mcp-clickhouse 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-clickhouse mcp-clickhouse是一款专为ClickHouse数据库设计的MCP&#xff08;Message Consumer Proxy&#xff09;…

作者头像 李华
网站建设 2026/4/26 17:42:30

Windows鼠标优化完全指南:提升第三方鼠标性能的5个专业技巧

Windows鼠标优化完全指南&#xff1a;提升第三方鼠标性能的5个专业技巧 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Windows系统下的鼠标体验优化是提升…

作者头像 李华
网站建设 2026/4/23 13:15:28

Voice Sculptor大模型镜像上线|支持细粒度语音风格控制

Voice Sculptor大模型镜像上线&#xff5c;支持细粒度语音风格控制 你有没有想过&#xff0c;一段文字能“长”出千种声音&#xff1f;不是简单换音色&#xff0c;而是让声音有年龄、有情绪、有职业身份、有江湖气——像捏陶土一样&#xff0c;把声音的每一寸质感都亲手塑造成…

作者头像 李华
网站建设 2026/4/25 9:52:31

WSL网络配置完全解决方案:从基础到进阶的实战指南

WSL网络配置完全解决方案&#xff1a;从基础到进阶的实战指南 【免费下载链接】WSL Issues found on WSL 项目地址: https://gitcode.com/GitHub_Trending/ws/WSL WSL网络配置是打通Windows与Linux开发环境的关键环节&#xff0c;直接影响服务访问、开发效率和系统集成能…

作者头像 李华
网站建设 2026/4/26 18:33:59

BERT智能填空服务集成HuggingFace:环境部署实战教程

BERT智能填空服务集成HuggingFace&#xff1a;环境部署实战教程 1. 什么是BERT智能语义填空&#xff1f; 你有没有遇到过一句话写到一半&#xff0c;突然卡壳&#xff0c;不知道该用哪个词最贴切&#xff1f;或者看到一段文字里有个空缺&#xff0c;凭直觉能猜出大概意思&…

作者头像 李华