centos 空间清理
CentOS 空间满了,空间服务起不来,清理网站打不开,空间数据库报错——这种时候别慌,清理也别急着重装系统。空间我处理过太多这样的清理故障,百分之八十的空间情况,都是清理日志文件和YUM缓存吃掉了磁盘。
先执行df -h看看哪个分区满了。空间通常/根分区最危险。清理再用du -sh /* 2>/dev/null | sort -rh | head -10找出最大的空间目录。这套组合拳打完,清理问题基本就暴露了。空间
日志文件是清理头号杀手。系统日志、空间nginx访问日志、MySQL慢查询日志,日积月累能膨胀到几个G。别急着删,先看大小:find /var/log -type f -size +100M -exec ls -lh { } \;。找到大文件后,用cat /dev/null > 文件名清空,而不是rm删除。为什么?因为有些进程还握着文件句柄,直接删了空间不会释放,必须清空内容才行。
YUM缓存也常被忽略。/var/cache/yum目录里躺着所有下载过的RPM包,时间长了能有几个G。执行yum clean all一键清理。如果你用dnf,命令换成dnf clean all。这个操作安全无副作用,放心跑。
还有journald日志——CentOS 7以后系统日志由它管理。journalctl --disk-usage查看占用,如果超过500M就执行journalctl --vacuum-size=200M,只保留最近200M的日志。这比手动删文件优雅多了,系统会自动管理。
别忘了/tmp目录。有些程序崩溃后会往这里写临时文件,或者你自己上传的压缩包解压完没删。顺手清理:find /tmp -type f -atime +7 -delete,删除7天没访问的文件。
还有个隐蔽角落——/var/lib/docker。如果你跑容器,镜像和容器层会疯狂占空间。docker system prune -a能清理所有悬空镜像和停止的容器。但注意,这会删除所有未被使用的镜像,下次启动要重新拉取。执行前确认一下你是否真的不需要那些旧镜像。
最后是core dump文件。程序崩溃会生成巨大的core文件,默认放在当前工作目录或/var/crash里。find / -name "core.*" -type f -size +50M搜出来,确认没用了就删。这玩意儿经常被忽略,但一个就能吃掉几个G。
清理完再跑一次df -h确认空间释放。如果释放量不够大,就检查/home分区有没有用户上传的大文件,或者用ncdu这个交互式工具逐层查看目录大小——它比du直观得多,能快速定位到具体文件。
说个我踩过的坑:有次清理完空间,第二天又满了。查了半天发现是MySQL的binlog在作怪。binlog是二进制日志,默认不自动清理,会无限增长。如果你开了binlog,记得设置expire_logs_days=7,或者手动执行PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;。这比任何清理工具都管用。
空间清理不是一次性的事。养成习惯,每周定时跑一遍du -sh /var/log /var/cache /tmp,把清理命令写进crontab里自动执行。省下的时间,够你多睡两小时午觉。
(责任编辑:知识)
