df 命令详解#
df 命令是 Linux 系统中用于显示磁盘空间使用情况的命令,是文件操作中常用的命令之一。本文将从入门到无敌,详细介绍 df 命令的使用方法和技巧。
入门阶段#
基本用法#
df 命令的基本语法:
df [选项]功能:显示文件系统的磁盘空间使用情况,包括总空间、已使用空间、可用空间和挂载点。
常用示例#
显示磁盘空间使用情况:
df以人类可读的格式显示:
df -h显示指定文件系统的磁盘空间使用情况:
df /dev/sda1显示指定目录的磁盘空间使用情况:
df /home
中级阶段#
常用选项#
| 选项 | 说明 |
|---|---|
-a, --all | 显示所有文件系统,包括虚拟文件系统 |
-h, --human-readable | 以人类可读的格式显示(如 K、M、G) |
-H, --si | 以 SI 单位显示(1000 为基数) |
-T, --print-type | 显示文件系统类型 |
-t, --type=TYPE | 只显示指定类型的文件系统 |
-x, --exclude-type=TYPE | 排除指定类型的文件系统 |
-i, --inodes | 显示 inode 使用情况 |
-k, --kilobytes | 以 KB 为单位显示 |
-m, --megabytes | 以 MB 为单位显示 |
-g, --gigabytes | 以 GB 为单位显示 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
组合使用示例#
以人类可读的格式显示所有文件系统:
df -ah显示文件系统类型:
df -T只显示 ext4 类型的文件系统:
df -t ext4排除 tmpfs 类型的文件系统:
df -x tmpfs显示 inode 使用情况:
df -i以 GB 为单位显示:
df -g
高级阶段#
高级使用示例#
使用通配符:
# 显示所有 sd 开头的设备 df /dev/sd*使用管道:
# 显示使用率超过 80% 的文件系统 df -h | grep -v "Filesystem" | awk '{if($5 > 80) print $0}' # 按使用率排序 df -h | grep -v "Filesystem" | sort -k 5 -nr使用重定向:
# 将磁盘空间使用情况保存到文件 df -h > disk_usage.txt显示指定挂载点的磁盘空间使用情况:
# 显示多个挂载点的磁盘空间使用情况 df -h / /home /var使用
-P选项以 POSIX 格式显示:# 以 POSIX 格式显示 df -P使用
-l选项只显示本地文件系统:# 只显示本地文件系统 df -l
大师阶段#
复杂组合命令#
与
find命令结合使用:# 查找大文件并显示磁盘空间使用情况 find / -type f -size +100M 2>/dev/null | head -n 10 && df -h与
du命令结合使用:# 显示目录大小并显示磁盘空间使用情况 du -sh /home/* && df -h /home与
grep命令结合使用:# 显示包含特定关键字的文件系统 df -h | grep "ext4" # 显示不包含特定关键字的文件系统 df -h | grep -v "tmpfs"与
awk命令结合使用:# 计算总磁盘空间 df -k | grep -v "Filesystem" | awk '{total += $2} END {print "总磁盘空间:", total/1024/1024, "GB"}' # 计算已使用磁盘空间 df -k | grep -v "Filesystem" | awk '{used += $3} END {print "已使用磁盘空间:", used/1024/1024, "GB"}' # 计算可用磁盘空间 df -k | grep -v "Filesystem" | awk '{available += $4} END {print "可用磁盘空间:", available/1024/1024, "GB"}'与
sort命令结合使用:# 按总空间排序 df -h | grep -v "Filesystem" | sort -k 2 -hr # 按可用空间排序 df -h | grep -v "Filesystem" | sort -k 4 -hr
与其他命令结合使用#
与
watch命令结合使用:# 实时监控磁盘空间使用情况 watch -n 1 "df -h"与
alert命令结合使用:# 当磁盘使用率超过 90% 时发送警告 # 注意:需要安装相应的告警工具 df -h | grep -v "Filesystem" | awk '{if($5 > 90) system("echo \"Disk usage alert: " $0 "\" | mail -s \"Disk Usage Alert\" user@example.com")}'与
cron命令结合使用:# 添加到 crontab 定时执行 # 编辑 crontab # crontab -e # 添加以下行,每小时检查一次磁盘空间 # 0 * * * * df -h > /var/log/disk_usage.log与
lsblk命令结合使用:# 显示磁盘分区信息和磁盘空间使用情况 lsblk -f && df -h与
fdisk命令结合使用:# 显示磁盘分区表和磁盘空间使用情况 sudo fdisk -l && df -h
无敌阶段#
自定义 df 命令别名#
为了提高工作效率,可以在 .bashrc 或 .bash_profile 文件中为 df 命令创建别名:
# 在 ~/.bashrc 文件中添加以下内容
alias df='df -h' # 默认以人类可读的格式显示
alias dfa='df -ah' # 显示所有文件系统
alias dft='df -T' # 显示文件系统类型
alias dfi='df -i' # 显示 inode 使用情况
alias dfl='df -l' # 只显示本地文件系统
alias dfx='df -x tmpfs' # 排除 tmpfs 类型的文件系统添加后,执行 source ~/.bashrc 使别名生效。
高级技巧#
使用
df命令监控远程服务器的磁盘空间:# 监控远程服务器的磁盘空间 ssh user@server "df -h"使用
df命令和tmux命令结合使用:# 在 tmux 会话中监控磁盘空间 # 启动 tmux 会话 tmux new -s disk_monitor # 在 tmux 会话中执行 watch -n 1 "df -h"使用
df命令和grafana命令结合使用:# 配置 Grafana 监控磁盘空间 # 1. 安装 Prometheus 和 Node Exporter # 2. 配置 Prometheus 采集 Node Exporter 数据 # 3. 在 Grafana 中添加 Prometheus 数据源 # 4. 创建磁盘空间监控面板使用
df命令和systemd命令结合使用:# 创建系统服务监控磁盘空间 # 创建服务文件 sudo nano /etc/systemd/system/disk-monitor.service # 添加以下内容 [Unit] Description=Disk Monitor After=network.target [Service] Type=simple ExecStart=/bin/bash -c 'df -h | grep -v "Filesystem" | awk "{if($5 > 90) system(\"echo \"Disk usage alert: \" $0 \"\" | mail -s \"Disk Usage Alert\" user@example.com\")}"' Restart=always [Install] WantedBy=multi-user.target # 启用并启动服务 sudo systemctl enable disk-monitor.service sudo systemctl start disk-monitor.service使用
df命令和python命令结合使用:# 使用 Python 脚本监控磁盘空间 cat > disk_monitor.py << 'EOF' #!/usr/bin/env python3 import subprocess import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # 执行 df 命令 result = subprocess.run(['df', '-h'], capture_output=True, text=True) output = result.stdout # 检查磁盘使用率 lines = output.strip().split('\n')[1:] alerts = [] for line in lines: parts = line.split() if len(parts) >= 5: usage = parts[4] if usage.endswith('%'): usage_percent = int(usage[:-1]) if usage_percent > 90: alerts.append(line) # 发送告警邮件 if alerts: sender_email = "your_email@example.com" receiver_email = "user@example.com" password = "your_password" message = MIMEMultipart() message["From"] = sender_email message["To"] = receiver_email message["Subject"] = "Disk Usage Alert" body = "Disk usage alert:\n" + "\n".join(alerts) message.attach(MIMEText(body, "plain")) with smtplib.SMTP_SSL("smtp.example.com", 465) as server: server.login(sender_email, password) server.send_message(message) EOF chmod +x disk_monitor.py python3 disk_monitor.py使用
df命令和bash脚本结合使用:# 创建 bash 脚本监控磁盘空间 cat > disk_monitor.sh << 'EOF' #!/bin/bash # 执行 df 命令 df -h > /var/log/disk_usage.log # 检查磁盘使用率 while read line; do usage=$(echo $line | awk '{print $5}') if [[ $usage =~ % ]]; then usage_percent=${usage%"%"} if [ $usage_percent -gt 90 ]; then echo "Disk usage alert: $line" | mail -s "Disk Usage Alert" user@example.com fi fi done < <(df -h | grep -v "Filesystem") EOF chmod +x disk_monitor.sh ./disk_monitor.sh
性能优化#
使用
-l选项只显示本地文件系统:# 推荐:只显示本地文件系统 df -l # 不推荐:显示所有文件系统 df使用
-t选项只显示指定类型的文件系统:# 推荐:只显示 ext4 类型的文件系统 df -t ext4 # 不推荐:显示所有文件系统 df使用
-x选项排除不需要的文件系统:# 推荐:排除 tmpfs 类型的文件系统 df -x tmpfs # 不推荐:显示所有文件系统 df使用
-h选项以人类可读的格式显示:# 推荐:以人类可读的格式显示 df -h # 不推荐:以默认格式显示 df对于远程服务器,使用
-P选项以 POSIX 格式显示:# 推荐:以 POSIX 格式显示 ssh user@server "df -P" # 不推荐:以默认格式显示 ssh user@server "df"
总结#
df 命令是 Linux 系统中用于显示磁盘空间使用情况的重要命令,掌握其各种选项和使用技巧,可以帮助你更好地管理和监控系统的磁盘空间。从入门到无敌,本文涵盖了 df 命令的所有重要用法,希望对你有所帮助。
常用选项总结#
| 选项 | 说明 |
|---|---|
-a, --all | 显示所有文件系统,包括虚拟文件系统 |
-h, --human-readable | 以人类可读的格式显示(如 K、M、G) |
-H, --si | 以 SI 单位显示(1000 为基数) |
-T, --print-type | 显示文件系统类型 |
-t, --type=TYPE | 只显示指定类型的文件系统 |
-x, --exclude-type=TYPE | 排除指定类型的文件系统 |
-i, --inodes | 显示 inode 使用情况 |
-k, --kilobytes | 以 KB 为单位显示 |
-m, --megabytes | 以 MB 为单位显示 |
-g, --gigabytes | 以 GB 为单位显示 |
-l, --local | 只显示本地文件系统 |
-P, --portability | 以 POSIX 格式显示 |
最佳实践#
使用
-h选项:使用-h选项,以人类可读的格式显示磁盘空间使用情况,便于查看。定期检查:定期使用
df命令检查磁盘空间使用情况,及时发现并处理磁盘空间不足的问题。监控告警:配置监控系统,当磁盘使用率超过阈值时发送告警,及时处理。
结合其他命令:与
find、du、lsblk等命令结合使用,更全面地了解磁盘使用情况。性能优化:使用
-l、-t、-x等选项,只显示需要的信息,提高命令执行速度。远程监控:使用
ssh命令监控远程服务器的磁盘空间使用情况。
通过不断练习和使用,你将能够熟练掌握 df 命令的各种技巧,成为 Linux 磁盘空间管理的高手。