Linux命令行查看磁盘大小完全指南

引言

在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 fdiskparted:分区管理工具

这些命令需要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 权限问题

  • dfdu通常无需root权限
  • fdisklsblk -fparted等需要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磁盘查看命令是系统管理的基础技能。建议读者:

  1. 日常使用df -h监控磁盘使用率
  2. 使用du分析具体目录占用
  3. 定期使用lsblk了解磁盘结构
  4. 建立磁盘监控和清理机制

通过合理组合这些命令,你可以轻松应对各种磁盘空间管理需求,确保系统稳定高效运行。记住,预防胜于治疗 ,定期监控磁盘使用情况,避免磁盘满导致的系统问题。

在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 权限才能查看所有信息。

相关推荐
diegoXie1 小时前
WSL2 跨系统文件移动
linux·ubuntu
马儿能够一直跑2 小时前
同一个环境中安装两个不同版本esp-idf的python冲突解决方案
linux·运维·服务器
小雪_Snow2 小时前
Rocky 操作防火墙
linux
tang_vincent2 小时前
Linux物理内存管理-引导内存分配器
linux
vortex52 小时前
从 Scoop 故障看 Windows 与 Linux 软硬链接与权限机制的底层差异
linux·运维·windows
Felven2 小时前
盛科工业千兆网交换机端口计数查看
运维·网络·盛科交换机
洒家肉山大魔王2 小时前
Kubernetes中Pod 处于 CrashLoopBackOff 状态(生产环境)
linux·容器·kubernetes·pod·pod循环重启
Unlyrical2 小时前
为什么moduo库要进行线程检查
linux·服务器·开发语言·c++·unix·muduo
小武~2 小时前
Leetcode 每日一题C 语言版 -- 234 basic calculator
linux·c语言·leetcode