系统监控 / 命令文档

Linux du & df 命令

$ du 9 个章节 Linux 命令详解

概述

掌握磁盘空间管理的核心技能

du

命令含义

disk usage - 统计目录或文件所占用的磁盘空间大小

核心功能:递归统计目录及其子目录的大小

使用场景

查找占用空间最大的目录

清理磁盘空间前的空间分析

监控项目目录大小变化

备份前评估数据量

常用参数

-h  # 人类可读格式 (K, M, G)

-s  # 只显示总计

-a  # 显示所有文件和目录

-d  # 指定递归深度

-x  # 不跨越文件系统边界

--max-depth=N  # 最大递归深度

df

命令含义

disk free - 显示文件系统的磁盘空间使用情况

核心功能:查看挂载点的总空间、已用空间和可用空间

使用场景

监控系统磁盘使用率

检查是否有磁盘空间不足

了解各个分区的空间分布

系统性能优化分析

常用参数

-h  # 人类可读格式 (K, M, G)

-T  # 显示文件系统类型

-i  # 显示inode使用情况

-x  # 排除指定文件系统类型

-t  # 只显示指定文件系统类型

-a  # 显示所有文件系统

du vs df 核心区别

对比项du 命令df 命令
主要功能统计目录/文件实际占用空间显示文件系统总体空间情况
统计范围指定路径下的内容整个文件系统/分区
计算方式递归遍历统计文件大小读取文件系统元数据
执行速度较慢(需要遍历文件)很快(读取系统信息)
结果精度显示实际文件占用显示分配的块空间

运维实战命令

场景1:系统空间不足排查

# 查看根目录下各目录大小,按大小排序

du -sh /* 2>/dev/null | sort -hr

# 查看当前目录下最大的10个目录

du -sh * | sort -hr | head -10

# 递归查找超过100M的目录

du -h --max-depth=2 / | awk '$1 ~ /[0-9]+G|[5-9][0-9][0-9]M|[0-9][0-9][0-9][0-9]M/'

场景2:磁盘使用率监控

# 检查磁盘使用率超过80%的分区

df -h | awk 'NR>1 && $5+0 > 80 {print $0}'

# 显示详细的文件系统信息

df -Th

# 监控inode使用情况(防止小文件过多)

df -i | awk 'NR>1 && $5+0 > 80 {print "inode警告: " $0}'

场景3:日志清理分析

# 统计日志目录大小

du -sh /var/log

# 查看日志目录下各子目录大小

du -h --max-depth=1 /var/log | sort -hr

# 查找7天前的大日志文件

find /var/log -name "*.log" -mtime +7 -size +100M -exec du -h {} \;

场景4:用户目录管理

# 统计所有用户主目录大小

du -sh /home/* | sort -hr

# 查看当前用户目录详细分析

du -h --max-depth=2 ~ | sort -hr

# 找出隐藏目录的大小

du -sh ~/.[^.]* 2>/dev/null

专家运维提示

性能优化:

大目录用 du -s 避免过多输出

使用 --max-depth 限制递归深度

combine with find 命令提高效率

定期监控避免空间耗尽

故障排查:

df 和 du 结果不一致检查已删除但未释放的文件

使用 lsof 查找占用已删除文件的进程

inode耗尽比空间耗尽更难处理

定期清理临时文件和日志

进阶运维技巧

#!/bin/bash

echo "=== 系统磁盘空间分析报告 ==="

echo "1. 磁盘使用率:"

df -h | grep -E "^/dev"

echo -e "\n2. 最大的5个目录:"

du -sh /* 2>/dev/null | sort -hr | head -5

echo -e "\n3. inode使用情况:"

df -i | awk 'NR>1 && $5+0 > 70 {print " " $0}'

echo -e "\n4. 临时文件统计:"

du -sh /tmp /var/tmp 2>/dev/null

同分类 · 其他命令文档