Linux磁盘空间排查四步法:先用df -h定位高危分区,再用du -sh *逐层下钻找大目录,接着用lsof +L1检查已删仍被占用文件,最后用find专项扫描隐藏、大、稀疏及多硬链接文件。

排查Linux磁盘空间问题,核心是“定位谁占了空间、为什么占、怎么清理”,不靠猜,靠逐层缩小范围。以下流程适用于物理机、虚拟机、容器宿主机、云服务器等全部场景,已验证多年稳定有效。
用 df -h 看整体使用率,重点关注 Use% 列超过85%的挂载点(如 /、/home、/var)。注意看 Mounted on 列——别只盯着 /dev/sda1,要结合挂载路径判断实际影响范围。若看到 100% 但系统还能操作,可能是已删除文件仍被进程占用(见第三步)。
切换到对应挂载点(如 cd /),运行:
du -sh * 2>/dev/null | sort -hr | head -20
说明:
• du -sh * 统计当前层各目录大小(-s 合并子项,-h 可读)
• 2>/dev/null 屏蔽权限不足报错(避免干扰排序)
• sort -hr 按人类可读格式逆序排(G > M > K)
• head -20 只看前20个最大项
常见高危目录:/var/log、/var/lib/docker、/home、/tmp、/usr/local。找到最大目录后,cd 进去重复执行该命令,逐层下钻。
执行:
lsof +L1 或 lsof | grep deleted
若输出非空,说明有进程正打开已被 rm 删除的文件,其空间不会释放。典型场景:
• 日志轮转未重启服务(如 nginx、java 应用)
• 长期运行的守护进程持续写入已删日志文件
解决方法:
• 重启对应服务(最稳妥)
• 或用 kill -USR1 [pid] 触发日志重开(需程序支持,如 nginx)
• 极端情况可 kill 进程释放(评估业务影响)
有些文件 du 算不到,但真实占磁盘,需专项扫描:
• 查隐藏文件:du -sh .[a-zA-Z0-9]* 2>/dev/null | sort -hr | head -10
• 查大于100MB的普通文件:find /path -xdev -type f -size +100M -ls 2>/dev/null | sort -k7nr | head -10(-xdev 防跨分区)
• 查稀疏文件(如qcow2、docker overlay):find /path -xdev -type f -printf '%s %p\n' | sort -nr | head -5(用 %s 显示实际磁盘占用,非逻辑大小)
• 检查硬链接混乱:find /path -xdev -links +100 -ls 2>/dev/null | head -5(过多硬链接可能掩盖真实归属)
基本上就这些。四步下来,99% 的磁盘满问题都能准确定位。不复杂但容易忽略细节——比如没加 -xdev 跨了 NFS 导致卡死,或忘了 2>/dev/null 让错误刷屏盖过关键结果。动手前先 df,收尾后记得 df 再确认。
以上就是Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号