- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
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线路检测中心期待与你一起探索。
售前咨询
售后咨询
备案咨询
二维码

TOP