df 命令:磁盘空间使用情况分析利器 - Linux 命令手册

前言

最近整理了一份Linux命令手册:从基础到进阶的完整指南
老实说,我被网上那些浅显的教程搞得有点烦。所以决定自己动手,从基础到进阶,把常用命令都整理了一遍。每个命令不仅有基本用法,还配了实际例子,希望能帮大家更好地理解和应用。
如果你正在学习Linux,或者想提升技能,不妨看看。可能对你有用,也可能没用,但至少是我的一点小心意。
有什么想法随时告诉我,一起学习,共同进步!

1. 命令简介

df(Disk Free 的缩写)是一个强大的 Unix/Linux 命令行工具,用于报告文件系统磁盘空间的使用情况。它可以显示文件系统的总大小、已用空间、可用空间以及使用率等信息。这个命令在系统管理、存储规划和故障排查中扮演着关键角色。

2. 基本语法

df [选项] [文件系统]

3. 常用选项详解

  • -h--human-readable: 以人类可读的格式显示大小(如 KB, MB, GB)
  • -T--print-type: 显示文件系统类型
  • -i--inodes: 显示 inode 信息而不是块使用量
  • -a--all: 包括伪文件系统、重复项和不可访问的文件系统
  • -x--exclude-type: 排除指定类型的文件系统
  • --total: 显示总计行
  • -P--portability: 使用 POSIX 输出格式

4. 基础用法示例

4.1 显示所有文件系统的使用情况

df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   13G  6.2G  68% /
/dev/sda2       100G   52G   48G  52% /home
tmpfs           3.9G     0  3.9G   0% /dev/shm

4.2 显示特定文件系统的使用情况

df -h /home

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       100G   52G   48G  52% /home

4.3 显示文件系统类型

df -T

输出示例:

Filesystem     Type     1K-blocks      Used Available Use% Mounted on
/dev/sda1      ext4      20511356  13123460   6351512  68% /
/dev/sda2      ext4     103081248  52428800  50652448  52% /home
tmpfs          tmpfs      4017032         0   4017032   0% /dev/shm

5. 高级用法和技巧

5.1 显示 Inode 使用情况

df -i

输出示例:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1      1310720 279886 1030834   22% /
/dev/sda2      6553600 135168 6418432    3% /home

5.2 排除特定类型的文件系统

df -h -x tmpfs -x devtmpfs

这将显示所有文件系统的使用情况,但排除 tmpfs 和 devtmpfs 类型。

5.3 只显示本地文件系统

df -hl

5.4 结合 Awk 提取特定信息

df -h | awk '$NF=="/" {print $5}'

这将只显示根文件系统的使用百分比。

6. 实际应用场景

6.1 监控磁盘空间并发送警报

#!/bin/bash
# disk_space_monitor.sh

THRESHOLD=90
EMAIL="admin@example.com"

df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $THRESHOLD ]; then
    echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" | \
    mail -s "Alert: Almost out of disk space $usep%" $EMAIL
  fi
done

这个脚本检查所有分区的使用情况,如果任何分区的使用率超过 90%,就会发送一封警报邮件。

6.2 创建磁盘使用报告

#!/bin/bash
# disk_usage_report.sh

echo "Disk Usage Report for $(date +"%Y-%m-%d")" > disk_report.txt
echo "================================================" >> disk_report.txt
echo "" >> disk_report.txt

echo "Overall Disk Usage:" >> disk_report.txt
df -h --total | grep total >> disk_report.txt
echo "" >> disk_report.txt

echo "Disk Usage by Filesystem:" >> disk_report.txt
df -h | grep -v tmp >> disk_report.txt
echo "" >> disk_report.txt

echo "Inodes Usage:" >> disk_report.txt
df -i | grep -v tmp >> disk_report.txt

echo "Report generated and saved as disk_report.txt"

这个脚本创建一个包含磁盘使用情况的详细报告,包括总体使用情况、各文件系统的使用情况和 inode 使用情况。

7. 性能考虑

  • df 命令通常执行速度很快,但在有大量挂载点的系统上可能会稍慢。
  • 频繁运行 df 命令(如在循环中)可能会导致不必要的 I/O 操作。考虑缓存结果或减少调用频率。

8. 安全注意事项

  • df 命令本身不会修改任何系统设置,但它可能会暴露系统结构信息。
  • 在多用户系统中,普通用户可能无法看到某些挂载点的信息。
  • 避免在公开脚本中硬编码敏感的文件系统路径。

9. 与其他工具的集成

  • 结合 awk, sed, grep 等命令可以实现更复杂的磁盘空间分析。
  • 可以与 cron 一起使用来定期检查磁盘空间。
  • du 命令结合使用可以提供更详细的磁盘使用情况分析。

10. 故障排除

  • 如果 df 命令卡住,可能是由于 NFS 挂载点响应缓慢。使用 df -l 只显示本地文件系统。
  • 在某些系统上,dfdu 命令可能显示不一致的结果,这通常是由于文件系统的特性(如快照、压缩)或正在运行的进程占用空间导致的。

11. 相关命令

  • du: 估算文件和目录的空间使用量
  • fdisk: 磁盘分区工具
  • mount: 挂载文件系统
  • lsblk: 列出块设备信息
  • findmnt: 查找文件系统的挂载信息

通过掌握这些 df 命令的高级用法和技巧,系统管理员和开发人员可以更有效地监控和管理磁盘空间,从而确保系统的稳定运行和性能优化。

9. 更多内容推荐

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值