df和du命令指南:Linux磁盘空间分析工具
1. 简介
df(disk free)和du(disk usage)是Linux系统中两个重要的磁盘空间分析工具。df用于查看文件系统的磁盘空间使用情况,而du用于统计文件和目录的磁盘使用量。
主要功能
- 查看文件系统空间使用状况
- 统计目录和文件的大小
- 分析磁盘空间占用
- 监控磁盘使用趋势
- 识别大文件和目录
2. df命令详解
基本用法
# 显示所有文件系统信息
df
# 使用人类可读格式显示
df -h
# 显示文件系统类型
df -T
# 显示inode信息
df -i
# 指定文件系统
df /dev/sda1
常用选项
# 显示所有文件系统(包括0块的)
df -a
# 只显示本地文件系统
df -l
# 不显示特定类型文件系统
df -x tmpfs -x devtmpfs
# 以1K块为单位显示
df -k
3. du命令详解
基本用法
# 显示当前目录使用情况
du
# 使用人类可读格式
du -h
# 只显示总计
du -s
# 显示指定深度的目录
du --max-depth=1
# 按大小排序(需要sort命令)
du -h | sort -hr
常用选项
# 显示文件大小
du -a
# 不跟随符号链接
du -P
# 统计硬链接文件
du -l
# 排除特定模式
du --exclude="*.log"
4. 常见使用场景
磁盘空间分析
# 查找大文件目录
du -h --max-depth=1 /path | sort -hr
# 统计特定类型文件
du -ch *.log
# 查看用户主目录使用情况
du -sh /home/*
# 分析系统目录空间
du -h --max-depth=1 /var/
空间监控
# 检查磁盘使用率
df -h | awk '$5 > "80%"'
# 监控特定目录增长
watch -n 60 'du -sh /var/log'
# 检查inode使用情况
df -i | awk '$5 > "90%"'
5. 高级特性
自定义输出
# 自定义输出格式(df)
df --output=source,size,used,avail
# 时间戳显示(du)
du -h --time
# 显示文件所属(du)
du -h --apparent-size
组合使用
# 查找最大的目录并显示详细信息
du -h --max-depth=1 | sort -hr | head -n 5
# 统计不同文件类型的空间使用
for i in /*; do du -sh "$i" 2>/dev/null; done | sort -hr
# 监控磁盘使用变化
while true; do df -h > df_now; diff df_prev df_now; cp df_now df_prev; sleep 300; done
6. 最佳实践
性能优化
- 使用-x选项排除不需要的文件系统
- 使用--max-depth限制扫描深度
- 避免在大文件系统上频繁运行du
- 使用-s选项只获取总计信息
监控建议
- 定期检查关键目录的空间使用
- 设置阈值告警(如使用率超过80%)
- 关注inode使用情况
- 监控空间使用趋势
7. 常见问题排查
空间不足问题
# 查找最大的文件
find / -type f -exec du -h {} + | sort -hr | head -n 10
# 检查删除文件但空间未释放
lsof | grep deleted
# 分析日志文件增长
du -h --time /var/log/* | sort -hr
inode耗尽问题
# 查找包含大量小文件的目录
for i in /*; do echo "$(find "$i" -type f | wc -l) $i"; done | sort -nr
# 检查inode使用率
df -i | awk '$5 ~ /%/ && $5 > 85'
# 查找空文件
find / -type f -empty -ls