引言
在Linux系统管理和日常维护中,监控磁盘使用情况是一项至关重要的任务。无论是服务器管理员排查空间不足问题,还是普通用户管理个人文件,掌握查看磁盘大小的命令行工具都必不可少。本文将全面介绍Linux中用于查看磁盘大小和空间使用的各种命令及其应用场景。
一、查看已挂载磁盘使用情况
1.1 df命令:磁盘文件系统使用情况
df(disk free)是最常用的查看磁盘空间命令,用于显示文件系统的磁盘使用情况。
bash
# 基本用法,显示所有挂载点
df
# 人类可读格式(自动转换为KB、MB、GB)
df -h
# 显示文件系统类型
df -T
# 同时显示文件系统类型和人类可读格式
df -Th
# 排除tmpfs等特殊文件系统
df -h --exclude-type=tmpfs --exclude-type=devtmpfs
# 按使用率排序显示
df -h | sort -k5 -hr
输出解读示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 42% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sdb1 100G 30G 70G 30% /data
- Size:总容量
- Used:已使用空间
- Avail:可用空间
- Use%:使用百分比
- Mounted on:挂载点
1.2 df高级选项
bash
# 显示inode使用情况(文件数量限制)
df -i
df -hi # 人类可读格式
# 只显示特定文件系统
df -h /dev/sda1
df -h /home
# 显示特定类型的文件系统
df -t ext4 # 只显示ext4
df -x tmpfs # 排除tmpfs
# 实时监控磁盘变化(每2秒刷新)
watch -n 2 df -h
二、查看目录和文件磁盘占用
2.1 du命令:目录/文件大小分析
du(disk usage)用于估算文件和目录的磁盘使用量。
bash
# 查看当前目录总大小
du -sh
# 查看指定目录大小
du -sh /var/log
# 查看目录下各子项大小
du -sh *
# 递归查看所有子目录大小
du -h --max-depth=1
# 限制递归深度(查看2级子目录)
du -h --max-depth=2
# 按大小排序(最大在前)
du -h --max-depth=1 | sort -hr
2.2 du命令实用技巧
bash
# 查找大文件的常用组合命令
# 查找当前目录下最大的10个文件/目录
du -ah . | sort -rh | head -10
# 只统计文件,不包括目录
find . -type f -exec du -h {} + | sort -rh | head -20
# 按时间查看文件大小(最近修改的)
du -ah --time | sort -rh | head -10
# 排除某些目录(如排除.git目录)
du -h --exclude=.git --max-depth=1
# 统计目录下各类型文件大小
find . -type f -name "*.log" -exec du -ch {} + | tail -1
三、查看磁盘和分区信息
3.1 lsblk命令:块设备树状图
lsblk(list block devices)以树状格式显示块设备信息,直观展示磁盘分区关系。
bash
# 基本显示,树状结构
lsblk
# 显示完整信息(包括文件系统、UUID)
lsblk -f
# 自定义显示列
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,LABEL
# 显示所有设备(包括空设备)
lsblk -a
# 以原始字节显示大小
lsblk -b
# 显示SCSI设备信息
lsblk -S
3.2 fdisk和parted:分区管理工具
这些命令需要root权限,用于查看和操作磁盘分区表。
bash
# 查看所有磁盘分区信息(需sudo)
sudo fdisk -l
# 查看指定磁盘
sudo fdisk -l /dev/sda
# parted工具,支持更多文件系统类型
sudo parted -l
# 查看GPT分区表
sudo gdisk -l /dev/sda
四、特殊场景下的磁盘查看
4.1 LVM逻辑卷管理
bash
# 查看物理卷
sudo pvs
sudo pvdisplay
# 查看卷组
sudo vgs
sudo vgdisplay
# 查看逻辑卷
sudo lvs
sudo lvdisplay
# 查看所有LVM设备
sudo lvmdiskscan
4.2 RAID阵列查看
bash
# 查看软件RAID状态
cat /proc/mdstat
# 查看RAID详细信息
sudo mdadm --detail /dev/md0
4.3 SCSI/SATA设备信息
bash
# 查看SCSI设备及容量
lsscsi -s
# 查看块设备属性
sudo blkid
# 查看硬盘型号和序列号
sudo hdparm -I /dev/sda | grep -E "Model|Serial"
五、实用组合命令示例
5.1 快速系统概览脚本
bash
#!/bin/bash
echo "=== 磁盘空间概览 ==="
df -h --output=source,fstype,size,used,avail,pcent,target | grep -v tmpfs
echo -e "\n=== 根目录使用分析 ==="
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -10
echo -e "\n=== 磁盘分区信息 ==="
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL
5.2 监控磁盘使用率的脚本
bash
#!/bin/bash
# 监控磁盘使用率,超过阈值报警
THRESHOLD=80
ALERT_EMAIL="admin@example.com"
df -h | grep '^/dev/' | while read output
do
usep=$(echo $output | awk '{print $5}' | cut -d'%' -f1)
partition=$(echo $output | awk '{print $1}')
if [ $usep -ge $THRESHOLD ]; then
echo "警报:分区 $partition 使用率 $usep% 超过阈值 $THRESHOLD%" | \
mail -s "磁盘空间警报" $ALERT_EMAIL
fi
done
5.3 查找大文件的常用命令组合
bash
# 查找系统中大于100MB的文件
find / -type f -size +100M 2>/dev/null | xargs du -h | sort -hr
# 按修改时间查找大文件(最近30天)
find / -type f -size +50M -mtime -30 2>/dev/null -exec ls -lh {} \;
# 分析/var/log目录下日志文件大小
find /var/log -name "*.log" -exec du -ch {} + | grep total
六、图形化替代工具
虽然本文重点在命令行,但对于需要可视化界面的场景:
bash
# ncdu - ncurses磁盘使用分析器(推荐)
sudo apt install ncdu # Debian/Ubuntu
sudo yum install ncdu # RHEL/CentOS
ncdu / # 扫描根目录
# 使用文件管理器
nautilus . # GNOME
dolphin . # KDE
thunar . # XFCE
七、最佳实践与注意事项
7.1 权限问题
df和du通常无需root权限fdisk、lsblk -f、parted等需要sudo权限- 某些目录(如
/root、/sys)需要root权限才能访问
7.2 性能考虑
- 在生产服务器上避免扫描整个文件系统,可能影响性能
- 使用
--exclude参数排除不需要的目录 - 对大目录使用
--max-depth限制递归深度
7.3 自动化监控建议
bash
# 添加磁盘检查到cron
# 每天检查一次磁盘使用率
0 2 * * * /usr/bin/df -h > /var/log/disk-usage.log
# 每周清理日志文件
0 3 * * 0 find /var/log -name "*.log" -type f -mtime +7 -delete
总结:常用命令速查表
| 命令 | 用途 | 常用选项 |
|---|---|---|
df -h |
查看磁盘使用情况 | -h人类可读,-T类型,-iinode |
du -sh |
查看目录大小 | -s总计,-h人类可读,--max-depth=N深度 |
lsblk |
查看磁盘分区结构 | -f文件系统,-o自定义列 |
fdisk -l |
查看分区表信息 | 需sudo权限 |
find + du |
查找大文件 | -size +100M,配合sort -hr排序 |
结语
掌握Linux磁盘查看命令是系统管理的基础技能。建议读者:
- 日常使用
df -h监控磁盘使用率 - 使用
du分析具体目录占用 - 定期使用
lsblk了解磁盘结构 - 建立磁盘监控和清理机制
通过合理组合这些命令,你可以轻松应对各种磁盘空间管理需求,确保系统稳定高效运行。记住,预防胜于治疗 ,定期监控磁盘使用情况,避免磁盘满导致的系统问题。

在Linux中,可以使用多个命令查看磁盘大小和空间使用情况:
1. 查看已挂载磁盘使用情况
df 命令(最常用)
bash
# 基础查看
df
# 人类可读格式(推荐)
df -h
# 显示文件系统类型
df -Th
# 只显示特定文件系统
df -h /dev/sda1
# 显示inode使用情况
df -i
2. 查看目录/文件磁盘占用
du 命令
bash
# 查看当前目录大小
du -sh
# 查看指定目录大小
du -sh /home
# 查看目录下各子目录大小
du -sh *
# 深度限制(查看1级子目录)
du -h --max-depth=1
# 按大小排序查看
du -h --max-depth=1 | sort -hr
3. 查看磁盘和分区信息
lsblk 命令(推荐)
bash
# 查看所有块设备
lsblk
# 显示详细信息
lsblk -f
# 显示磁盘大小和挂载点
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
fdisk 命令
bash
# 查看磁盘分区信息
sudo fdisk -l
# 查看特定磁盘
sudo fdisk -l /dev/sda
4. 其他有用命令
bash
# 查看磁盘统计信息
sudo parted -l
# 查看SCSI/SATA磁盘
lsscsi -s
# 查看逻辑卷(LVM)
sudo lvmdiskscan
sudo pvs
sudo vgs
sudo lvs
实用组合示例:
bash
# 快速查看磁盘使用概览
df -h | grep -E 'Filesystem|^/dev'
# 监控根目录使用情况(每2秒刷新)
watch -n 2 df -h /
# 找出占用空间最大的目录(前10名)
sudo du -h / --max-depth=2 2>/dev/null | sort -hr | head -20
# 查看所有磁盘的详细信息
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID
常用命令总结:
df -h- 快速查看磁盘使用情况du -sh [目录]- 查看目录占用空间lsblk- 查看磁盘分区结构fdisk -l- 查看详细分区信息
注意: 部分命令可能需要 sudo 权限才能查看所有信息。