非凡云 发表于 7 天前

Linux 磁盘管理:du、df、lsblk

在 Linux 中,du、df 和 lsblk 是管理磁盘空间和分区的重要命令。以下是详细的学习指南:

1. du:查看磁盘使用情况(Disk Usage)
用途:统计文件和目录占用的磁盘空间
常用选项:
[*]-h:人类可读格式(KB/MB/GB)
[*]-s:仅显示总大小(不显示子目录)
[*]-a:显示所有文件(包括普通文件)
[*]-c:显示总计
[*]--max-depth=N:限制目录深度
[*]--exclude:排除特定模式

常用示例:

# 查看当前目录各子目录大小
du -h

# 查看目录总大小(汇总)
du -sh /home

# 查看目录下所有文件/子目录的大小(深度=1)
du -h --max-depth=1 /var

# 统计特定类型文件的总大小(如 .log 文件)
du -ch *.log | grep total

# 排除特定目录(如 node_modules)
du -h --exclude="node_modules"2. df:查看文件系统磁盘空间(Disk Free)
用途:显示已挂载文件系统的可用空间
常用选项:
[*]-h:人类可读格式
[*]-T:显示文件系统类型
[*]-i:显示 inode 使用情况
[*]-x:排除特定文件系统类型

常用示例:

# 显示所有文件系统的磁盘使用(含类型)
df -Th

# 仅显示 ext4 文件系统
df -Th -t ext4

# 排除 tmpfs 文件系统
df -h -x tmpfs

# 查看 inode 使用情况(防小文件占满)
df -ih

# 查看特定目录所在分区的空间(如 /home)
df -h /home3. lsblk:查看块设备信息
用途:以树状结构显示磁盘和分区信息
常用选项:
[*]-f:显示文件系统类型和 UUID
[*]-o:自定义输出列(如 NAME,SIZE,FSTYPE,MOUNTPOINT)
[*]-p:显示完整设备路径
[*]-m:显示权限信息

# 基本使用:树状显示所有块设备
lsblk

# 显示文件系统信息(关键!)
lsblk -f

# 自定义输出列(名称、大小、类型、挂载点)
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

# 显示完整设备路径(如 /dev/sda1)
lsblk -p

# 结合 grep 过滤特定设备
lsblk | grep sda三者的核心区别
命令主要用途关键差异
du统计文件/目录的实际占用空间递归计算文件内容大小
df查看文件系统的可用空间基于分区统计,显示挂载点的整体使用
lsblk查看物理/逻辑磁盘结构显示设备层级(磁盘→分区→逻辑卷)

使用场景对比

当你想知道:
[*]某个目录占多大空间 → du -sh /path/to/dir
[*]磁盘还剩多少空间 → df -h
[*]分区是否已挂载 → lsblk -f
[*]磁盘分区结构 → lsblk

为什么磁盘满了:

df -h            # 先定位满的分区
du -sh /*          # 检查根目录下各目录大小
du -h --max-depth=1 /var | sort -h# 深度1排序高级技巧
找出大文件:
# 查找当前目录下大于 100MB 的文件
find . -type f -size +100M -exec du -h {} \;监控目录变化:
# 每 2 秒刷新 /tmp 的大小
watch -n 2 "du -sh /tmp"排除挂载点(避免重复统计):
du -h --exclude=/mnt/*常见问题解决
[*]df 和 du 结果不一致?

[*]可能原因:文件被删除但仍被进程占用(需重启进程或清空句柄)
[*]检查命令:lsof +L1 查看已删除但未释放的文件
[*]磁盘满但找不到大文件?
[*]检查 inode 使用:df -ih
[*]可能原因:大量小文件占满 inode

[*]LVM 逻辑卷信息:

lsblk -f# 显示逻辑卷路径(如 /dev/mapper/vg-root)
df -Th /dev/mapper/vg-root# 查看其空间掌握这三个命令,你将能高效分析和解决 Linux 磁盘空间问题!

页: [1]
查看完整版本: Linux 磁盘管理:du、df、lsblk