|
在 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 /home
复制代码 3. lsblk:查看块设备信息
用途:以树状结构显示磁盘和分区信息
常用选项:
- # 基本使用:树状显示所有块设备
- lsblk
- # 显示文件系统信息(关键!)
- lsblk -f
- # 自定义输出列(名称、大小、类型、挂载点)
- lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
- # 显示完整设备路径(如 /dev/sda1)
- lsblk -p
- # 结合 grep 过滤特定设备
- lsblk | grep sda
复制代码 三者的核心区别命令 主要用途 关键差异
du统计文件/目录的实际占用空间递归计算文件内容大小
df查看文件系统的可用空间基于分区统计,显示挂载点的整体使用
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"
复制代码 排除挂载点(避免重复统计):
常见问题解决df 和 du 结果不一致?
磁盘满但找不到大文件? 检查 inode 使用:df -ih 可能原因:大量小文件占满 inode
LVM 逻辑卷信息:
- lsblk -f # 显示逻辑卷路径(如 /dev/mapper/vg-root)
- df -Th /dev/mapper/vg-root # 查看其空间
复制代码 掌握这三个命令,你将能高效分析和解决 Linux 磁盘空间问题!
|
|