登录服务器后先用 df -h 查看各挂载点使用率,重点关注 Use% 超 98% 的分区(如 / 或 /var),再用 df -i 检查 inode 是否耗尽;接着用 du 和 find 分层定位大目录和大文件,注意隐藏文件;若删除后空间未释放,用 lsof +L1 查找被进程占用的已删文件;清理优先 truncate、压缩或 logrotate,避免直接 rm;长期需配置日志轮转和定期清理脚本。

登录服务器后第一件事不是乱翻文件,而是用 df -h 快速确认哪个挂载点使用率超标。重点关注 Use% 列,比如显示 98% 或 100% 的分区(常见是 / 或 /var)。如果看到 tmpfs 或 devtmpfs 占用高不用管——它们是内存虚拟文件系统,不占真实磁盘。
顺手加个 df -i,检查 inode 是否耗尽。有些场景磁盘空间还有余量,但因生成了海量小文件(如日志碎片、缓存临时文件),导致 IUse% 达到 100%,这时 touch 新文件或写日志会失败,但 df -h 看不出异常。
找到问题分区后,进入该挂载点(比如 cd /),用以下命令分层缩小范围:
du -sh * 2>/dev/null | sort -hr | head -20 —— 快速看出谁最吃空间,比如 /var 占 35G,/home 占 2Gcd /var && du -sh * 2>/dev/null | sort -hr | head -10 —— 很可能发现 /var/log 或 /var/lib/docker 是元凶find /var/log -type f -size +100M -exec ls -lh {} \; —— 直接列出所有超 100MB 的日志文件du -ah --max-depth=1 . | sort -rh | head -15 —— -a 包含点开头的隐藏项,有时 .cache 或 .local/share 暗藏巨无霸执行 rm 后 df -h 空间没释放?大概率是文件已被删除,但仍有进程在读写它,系统无法真正回收空间。
用这两个命令验证:
lsof +L1 —— 列出所有已删除但仍被打开的文件(带 DEL 标记)lsof | grep deleted —— 更直观,附带 PID 和进程名例如输出里有 java 1234 root 12w REG 8,1 2.1G ... /var/log/app.log (deleted),说明 Java 进程还在往这个已删文件写日志。解决办法是:重启对应服务(推荐),或 kill -HUP 1234(若支持重载日志句柄),不建议直接 kill -9 除非确认无影响。
确认目标后,清理要讲策略:
truncate -s 0 /path/to/big.log 清空内容(保留文件句柄,不中断服务),或 gzip 压缩后删原文件find /tmp -mtime +7 -delete、find /var/tmp -mtime +7 -delete
apt-get clean(Debian/Ubuntu)或 yum clean all(RHEL/CentOS)dpkg --list | grep '^ii linux-image-' | awk '{print $2}' | sort -V | sed -n '/'$(uname -r)'!p' | xargs apt-get -y purge(Ubuntu)长期预防靠两件事:一是配好 logrotate(比如 /etc/logrotate.d/nginx),二是定期跑轻量清理脚本(每天清 7 天前日志 + 压缩超 500MB 的活跃日志)。不需要全自动删一切,留 10%~15% 缓冲空间更稳妥。
基本上就这些。流程不复杂,但容易忽略 inode、deleted 文件、隐藏路径这三处关键盲点。
以上就是Linux磁盘空间如何排查_完整流程拆解让问题迎刃而解【技巧】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号