系统监控 / 命令文档

Linux du & df

$ df 1 个章节 Linux 命令详解

概述

磁盘使用分析双剑合璧 - 系统运维存储管理核心工具

du 命令

Disk Usage - 磁盘使用情况统计工具,用于查看目录和文件占用的磁盘空间大小。

统计目录/文件的实际占用空间

支持递归统计子目录

可以按大小排序显示

帮助定位占用空间的大文件

支持多种显示格式

df 命令

Disk Free - 文件系统磁盘空间使用情况报告工具,显示挂载的文件系统的可用空间。

显示文件系统总容量

显示已用和可用空间

显示使用百分比

查看挂载点信息

监控磁盘空间预警

du vs df 核心区别

对比维度du 命令df 命令
主要用途统计目录/文件占用空间显示文件系统剩余空间
分析对象具体的目录和文件整个文件系统/分区
显示信息目录大小、文件大小总容量、已用、可用、使用率
使用场景查找占用空间的大文件/目录监控磁盘空间是否充足
性能消耗需要遍历目录,相对较慢读取文件系统信息,速度快

运维实战命令大全

du 实战命令 df 实战命令 组合应用 监控脚本

基础用法

du -h /root/Dir_D_new/

以人类可读格式显示/root/Dir_D_new/目录大小

1.2G /root/Dir_D_new/

查找大目录

du -h --max-depth=1 /root/ | sort -hr

显示/root/下一级目录大小并按大小排序

1.5G /root/ 1.2G /root/Dir_D_new 235M /root/.cache 39M /root/tar_test 896K /root/backup 164K /root/.config 112K /root/ShellSummary 16K /root/backups 12K /root/.ssh 8.0K /root/.pki 8.0K /root/.pip 8.0K /root/Dir_A 8.0K /root/app 4.0K /root/Dir_C 4.0K /root/Dir_B 4.0K /root/chmod_test

TOP N 最大文件

du -ah /var | sort -hr | head -10

找出/var目录下占用空间最大的前10个文件/目录

指定大小阈值

du -h /home --threshold=1G

只显示大于1GB的目录

实时监控

watch -n 5 'du -sh /var/log'

每5秒钟监控/var/log目录大小变化

生成报告

du -h /home > disk_usage_report.txt 2>&1

将磁盘使用情况导出到报告文件

基础查看

df -h

以人类可读格式显示所有挂载的文件系统

Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 8.5G 11G 45% / /dev/sda2 100G 45G 50G 48% /home tmpfs 2.0G 0 2.0G 0% /dev/shm

监控特定分区

df -h /home

只显示/home分区的使用情况

显示inode使用情况

df -i

显示inode使用情况,对于小文件很多的情况很有用

Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1310720 145678 1165042 12% /

磁盘空间预警

df -h | awk '$5 > 80 {print "WARNING: " $0}'

显示使用率超过80%的分区预警

排除特定文件系统

df -h -x tmpfs -x devtmpfs

排除临时文件系统,只显示实际磁盘分区

按文件系统类型筛选

df -t ext4

只显示ext4文件系统的使用情况

磁盘空间完整分析

echo "=== 文件系统概览 ===" && df -h && echo -e "\n=== 大目录TOP5 ===" && du -h /home --max-depth=1 | sort -hr | head -5

组合显示文件系统使用情况和最大目录

深度磁盘分析

df -h | grep -vE '^Filesystem|tmpfs|cdrom|udev' | awk '{print $5 " " $1}' | while read output; do echo $output; if [ ${output%\%} -ge 85 ]; then du -h ${output#* } --max-depth=1 | sort -hr | head -5; fi; done

对使用率超过85%的分区进行详细分析

生成磁盘使用报告

{ echo "磁盘使用情况报告 - $(date)"; echo "=================="; df -h; echo -e "\n大文件TOP10:"; find /home -type f -size +100M -exec ls -lh {} \; | sort -k5 -hr | head -10; } > disk_report.txt

生成包含磁盘使用和大文件信息的综合报告

一键清理分析

df -h && echo -e "\n可清理的大文件:" && find /tmp /var/tmp -type f -size +50M -mtime +7 -ls

显示磁盘使用情况并找出可清理的临时大文件

磁盘监控脚本

#!/bin/bash # 磁盘空间监控脚本 THRESHOLD=80 df -h | awk 'NR>1 {gsub(/%/,"",$5); if($5 > '$THRESHOLD') print "WARNING: " $0}'

创建磁盘空间监控脚本,超过阈值时发出警告

邮件报警脚本

#!/bin/bash USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//') if [ $USAGE -gt 85 ]; then echo "磁盘使用率达到${USAGE}%" | mail -s "磁盘空间警告" admin@company.com fi

磁盘使用率超过85%时自动发送邮件警告

定时清理脚本

# 添加到crontab: 0 2 /path/to/cleanup.sh #!/bin/bash find /tmp -type f -mtime +7 -delete find /var/log -name ".log" -mtime +30 -delete logger "自动清理脚本执行完成"

定时清理临时文件和旧日志,释放磁盘空间

运维实战技巧

性能优化技巧

du命令在大目录上执行较慢,可使用 --max-depth 限制深度

使用 du -x 避免跨文件系统统计

大文件查找时结合 find 命令更高效

常见陷阱

du统计的是文件实际占用空间,df显示的是文件系统可用空间

删除大文件后df显示空间未释放,可能是进程仍在使用该文件

软链接文件du只统计链接本身大小,不统计目标文件

运维最佳实践

定期使用cron任务监控磁盘使用率

设置磁盘使用率阈值警告(建议85%)

建立日志轮转机制,定期清理旧日志文件

记忆口诀

du: Directory Usage - 目录使用情况

df: Disk Free - 磁盘剩余空间

-h: human readable - 人类可读格式

-i: inode - 文件节点信息

同分类 · 其他命令文档