必须用df -h查各挂载点Use%确认真实占用率,再用sudo du -sh .[a-zA-Z0-9] 2>/dev/null | sort -hr | head -n 10扫描隐藏目录,结合lsblk验证物理设备挂载关系,并用find / -xdev -type f -size +500M定位超大文件。

当银河麒麟系统提示“磁盘空间不足”却找不到明显大文件时,必须用命令行穿透图形界面的模糊统计,直接读取内核级真实磁盘占用数据——因为隐藏目录、权限受限路径、未释放句柄的已删文件都会让桌面环境显示的空间与实际可用量严重不符。
用 df -h 查看各挂载点整体占用率
df 命令从内核文件系统缓存中读取原始数据,输出中的 【Use%】列是唯一可信的分区级占用比例,不受用户权限或图形界面刷新延迟影响。
按下 Ctrl + Alt + T 打开终端,输入 df -h 并回车执行。
重点检查 /(根分区)、/home、/boot、/var 这四行右侧的 Use% 数值;若 /boot 显示 98%,说明系统更新将失败,必须立即处理。
想让高占用分区自动排在最上面:执行 df -h | sort -k5,5nr | grep -E '^/dev/|^mapper',该命令过滤掉 tmpfs/udev 等虚拟文件系统,只保留物理设备挂载点。
用 du 命令逐层下钻定位真实目录占用
df 只告诉你“哪块地快满了”,du 才能告诉你“地里长了什么”。它递归统计每个子项实际占用的磁盘块,包括硬链接重复计数和稀疏文件真实体积。
方法一:快速扫描顶层目录
先执行 cd /,再运行 sudo du -sh .[a-zA-Z0-9]* * 2>/dev/null | sort -hr | head -n 10。注意必须加 .[a-zA-Z0-9]* 才能包含隐藏目录(如 .cache、.local),否则会漏掉 30% 以上常见占用源。
方法二:精准定位某一分区内部
若 df 显示 /home 占用率达 94%,就执行 cd /home && sudo du -sh */ 2>/dev/null | sort -hr | head -n 5,结果中第一个条目就是当前吃空间最凶的用户主目录。
这一步操作起来很简单,但必须手动推进:对上一步发现的最大目录(如 user1)再次执行 cd user1 && du -sh .[a-zA-Z0-9]* * 2>/dev/null | sort -hr | head -n 3,直到某次输出中出现带扩展名的条目(如 2.1G core.dump),那就是真实的大文件。
用 lsblk 验证物理设备与挂载关系是否一致
第一步:运行 sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
第二步:找到 MOUNTPOINT 列非空的行(如 /dev/sda2 → /),比对其 SIZE 值与上一步 df -h 中对应 / 行的总容量是否基本一致。
第三步:若发现不一致(例如 lsblk 显示 sda2 SIZE 100G,df 却显示 / 总容量仅 50G),说明存在 LVM 逻辑卷或 btrfs 子卷嵌套,此时需额外运行 lvs 或 btrfs filesystem usage / 进一步确认。
【MOUNTPOINT 为空的设备(如 /dev/sdb1)不会出现在 df 结果里,也不计入任何 Use%,但它的全部容量当前完全不可用】
用 find 按大小筛选真实大文件
当 du 下钻后仍无法定位具体文件,或怀疑存在单个超大文件(如日志、镜像、数据库文件)时,find 是最直接的筛子。
查找大于 500MB 的所有普通文件:find /home -xdev -type f -size +500M -ls 2>/dev/null | sort -k7,7nr | head -n 5。-xdev 参数强制限制在 /home 所在物理分区搜索,避免跨挂载点误入 /proc 或 /sys 导致报错。
若要查全系统,把 /home 替换为 /,但必须加 sudo,否则跳过 /root、/var/log 等关键路径,结果毫无参考价值。
注意:-size 后单位必须大写(M/G),小写(m/g)会被解释为字节,导致命令无响应。

















