Linux磁盘空间如何排查_完整流程拆解让问题迎刃而解【技巧】

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

先看哪块盘满了

登录服务器后第一件事不是乱翻文件,而是用 df -h 快速确认哪个挂载点使用率超标。重点关注 Use% 列,比如显示 98%100% 的分区(常见是 //var)。如果看到 tmpfsdevtmpfs 占用高不用管——它们是内存虚拟文件系统,不占真实磁盘。

顺手加个 df -i,检查 inode 是否耗尽。有些场景磁盘空间还有余量,但因生成了海量小文件(如日志碎片、缓存临时文件),导致 IUse% 达到 100%,这时 touch 新文件或写日志会失败,但 df -h 看不出异常。

定位“真凶”目录和文件

找到问题分区后,进入该挂载点(比如 cd /),用以下命令分层缩小范围:

  • 查一级子目录总大小du -sh * 2>/dev/null | sort -hr | head -20 —— 快速看出谁最吃空间,比如 /var 占 35G,/home 占 2G
  • 进大目录继续深挖cd /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 暗藏巨无霸

注意“删了也白删”的陷阱

执行 rmdf -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 -deletefind /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  # java  # centos  # node  # docker  # nginx  # app  # ubuntu 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用查询构建器?(Query Builder高级用法)  如何快速建站并高效导出源代码?  Laravel怎么使用artisan命令缓存配置和视图  如何在万网自助建站中设置域名及备案?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Java遍历集合的三种方式  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  韩国服务器如何优化跨境访问实现高效连接?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  企业网站制作这些问题要关注  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  文字头像制作网站推荐软件,醒图能自动配文字吗?  简单实现jsp分页  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用腾讯建站主机快速创建免费网站?  ,交易猫的商品怎么发布到网站上去?  jQuery 常见小例汇总  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel Fortify是什么,和Jetstream有什么关系  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel如何处理和验证JSON类型的数据库字段  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何在万网利用已有域名快速建站?  如何在阿里云高效完成企业建站全流程?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  微信公众帐号开发教程之图文消息全攻略  教你用AI将一段旋律扩展成一首完整的曲子  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  JS经典正则表达式笔试题汇总  如何在建站之星网店版论坛获取技术支持?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel怎么在Controller之外的地方验证数据  PHP 500报错的快速解决方法  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Bootstrap整体框架之JavaScript插件架构  Laravel如何为API编写文档_Laravel API文档生成与维护方法  手机网站制作与建设方案,手机网站如何建设?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  简单实现Android验证码  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel如何实现多对多模型关联?(Eloquent教程)  JavaScript如何实现继承_有哪些常用方法  Laravel如何与Inertia.js和Vue/React构建现代单页应用