磁盘空间不足时不能盲目删文件,应先用df -h定位高占用分区、df -i排查inode耗尽,再用du -sh --max-depth=1分层定位大目录,结合find筛选大文件,并用sudo lsof +l1揪出已删除但被进程占用的“幽灵文件”。

磁盘空间不足时,不能只看 df 显示“已满”就盲目删文件。关键要分清:df 反映的是文件系统真实块占用,du 统计的是路径下可见文件的大小。两者不一致,说明有“df 看得见、du 找不到”的空间消耗源。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
先用 df 锁定问题分区和异常类型
执行 df -h 查所有挂载点,重点关注 Use% ≥ 90% 的分区(如 /、/var、/home)。接着对高占用分区运行 df -i,检查 inode 是否耗尽——这在日志爆炸或容器临时文件过多时很常见。如果 df 显示已用 98%,但 du 统计总和只有 60%,大概率是已删除但进程未释放的文件,或挂载覆盖干扰了统计范围。
再用 du 分层定位大目录
进入问题分区根目录(如 cd /var),运行:
du -sh --max-depth=1 2>/dev/null | sort -hr
它会列出一级子目录总大小,快速识别大户(如 /var/log、/var/cache)。对排前几位的目录继续下钻,例如:
du -sh log/* 2>/dev/null | sort -hr | head -5
加 --exclude 跳过虚拟文件系统,避免误统计:
du -sh --max-depth=1 --exclude=/proc --exclude=/sys /var
用 find 快速捕获孤立大文件
当目录内小文件极多、du 扫描缓慢时,直接按 size 筛选更高效:
find /var -type f -size +500M -exec ls -lh {} \; 2>/dev/null
限定范围提速,比如只查日志:
find /var/log -name "*.log" -size +100M -exec ls -lh {} \;
对匹配到的大文件,用 lsof -nP | grep "filename" 确认是否被进程持续写入(如 catalina.out)。
最后用 lsof 揪出“幽灵文件”
df 和 du 差值明显时,优先运行:
sudo lsof +L1(需 root 权限)
它列出所有链接数为 0 的打开文件,即“已删未释放”。输出中类似这样的一行就是线索:
java 1234 root 1w REG 8,1 2.1G 123456 /var/log/app.log (deleted)
对应 PID 的服务重启后,空间立即释放。不要 kill -9,除非确认无影响。










