帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Linux 服务器磁盘满到100%,太卡了如何排查处理

Linux 服务器磁盘满到100%,太卡了如何排查处理

2026-04-14 13:23:22 318

Linux 服务器磁盘满到100%,太卡了如何排查处理

欢迎来到8455线路检测中心技术小课堂,每天分享一个技术小知识。


登录服务器,输个命令半天没反应,部署应用提示“空间不足”,甚至数据库、网站直接卡死——查了半天,才发现磁盘使用率100%!

磁盘满了不是小事,轻则服务异常,重则数据丢失,而且很多人踩过“删了文件,空间还是不释放”的坑,越急越乱。

紧急排查——用du命令

磁盘满了,第一步不是盲目删除,而是找到“谁在占满磁盘”——不然删了一堆小文件,空间还是不够,纯属白费功夫。

这里用到最核心的命令,也是新手必记的:du -sh /

拆解一下这个命令,好记不混淆:

- d:显示目录占用大小;

- s:汇总显示(不显示子目录细节);

- h:用GB/MB直观显示(避免看一堆乱码数字);

/:遍历根目录下所有文件夹,排查哪个目录最占空间。

1. 登录服务器,输入 du -sh / ,回车后等待几秒(视磁盘大小而定),会显示类似这样的结果:

8.5G /root

45G /var

2.3G /usr

100M /home

2. 重点看数值最大的目录(比如上面的/var目录,占了45G),然后逐级排查——进入这个目录,再执行du -sh ,继续找占空间最大的子目录。

示例:cd /var → du -sh ,发现是/var/log(日志目录)占了40G,再进入/var/log,继续排查具体哪个日志文件最大。

小技巧:如果目录太多,可搭配排序命令:du -sh / | sort -rh ,按占用空间从大到小排序,“元凶”直接置顶,不用逐个找!

常见“吃盘重灾区”:/var/log(日志)、/root(备份文件)、/var/lib(数据库文件)、/tmp(临时文件),优先排查这几个目录,效率更高。

高效清理——3类文件优先删,安全不踩雷

找到大文件后,就可以针对性清理了。记住:优先删“无用、可恢复”的文件,避免误删系统文件、核心数据,导致服务器崩溃。推荐3类优先清理的文件,安全又高效,新手直接照做:

1. 日志文件(最常见、最安全)

Linux系统和应用(Nginx、MySQL、Tomcat)会不断生成日志,日积月累能占几十个G,尤其是错误日志、访问日志,清理后不影响服务运行。

清理方法(二选一,推荐第二种,避免误删):

① 直接删除(简单粗暴):rm -rf 日志文件名(比如 rm -rf /var/log/nginx/access.log)

② 清空文件(更安全,避免删除文件导致服务异常):echo "" > 日志文件名(比如 echo "" > /var/log/messages)

注意:清理日志后,建议重启对应服务(比如 systemctl restart nginx),确保日志正常生成。

2. 备份文件、压缩包

很多人部署应用、备份数据后,会把压缩包(.tar、.zip)、备份文件(.bak)留在服务器上,这些文件通常很大,且备份后可转移到本地,留在服务器纯属浪费空间。

排查方法:find / -name ".tar" -o -name ".zip" -o -name ".bak" ,找到所有备份/压缩文件,确认无用后删除。

提醒:删除前一定要确认——是否已经备份到本地?是否是近期必需的备份?避免误删无法恢复的数据。

3. 无用软件包、临时文件

服务器长期使用,会安装很多无用的软件包、依赖,还有/tmp目录下的临时文件,这些也会占用不少空间。

清理命令(分发行版,复制对应命令):

- CentOS/RHEL:yum clean all (清理yum缓存)、yum remove 无用包名(删除无用软件)

- Ubuntu/Debian:apt clean (清理apt缓存)、apt remove 无用包名

- 临时文件:rm -rf /tmp/ (注意:/tmp目录下的文件都是临时文件,重启后会自动清空,放心删)

避坑重点!删了文件,磁盘空间还是不释放?

这是最容易踩的坑——明明删了几个大文件,用df -h查看,磁盘使用率还是100%,心态直接崩了!

原因很简单:删除的文件,还被某个进程占用着。Linux系统中,文件被进程打开后,即使删除了文件本身,内核还是会保留文件的占用,直到进程终止,空间才会释放。

举个例子:你删除了nginx的访问日志,但nginx进程还在运行,日志文件的占用就不会释放,磁盘空间自然不变。


解决方法(两种,按需选择):

方法1:重启对应进程(推荐,安全不影响全局)

先找到占用被删除文件的进程,比如上面的nginx,直接重启进程:systemctl restart nginx ,重启后,进程释放文件占用,空间就会自动释放。

如果不知道哪个进程占用,可使用命令:lsof | grep deleted ,查看所有“已删除但仍被占用”的文件,找到对应进程ID(PID),然后终止进程:kill -9 PID。


方法2:清空文件(无需重启进程,更高效)

如果进程不能重启(比如核心业务进程),可以直接清空文件,而不是删除文件——这样既能释放空间,又不会影响进程运行。

命令:echo "" > 文件名 (比如 echo "" > /var/log/nginx/access.log)

重点提醒:尽量不要直接删除正在被进程占用的文件,优先用“清空文件”的方式,避免进程异常、数据丢失。

最后给大家一个小建议:定期清理磁盘(比如每周清理一次日志),给磁盘预留10%-20%的空闲空间,避免再次出现“磁盘满100%”的紧急情况。

另外,清理前一定要做好核心数据备份,避免误删重要文件——小心驶得万年船!


8455线路检测中心官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,8455线路检测中心整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,8455线路检测中心期待与你一起探索。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题:
XML 地图