Linux磁盘满导致网站打不开,清理日志方法

网站突然打不开,SSH 能连上但网页报 500 或 502,多半是 Linux 磁盘被日志写满了。
本文面向零基础用户,从确认磁盘状态开始,到定位大文件、安全清理日志、验证网站恢复,每一步都给出可照做的命令和路径。

先确认是不是磁盘满了

登录服务器后,第一件事是查看磁盘使用率。
执行:

df -h

重点看 //www 挂载点的 Use% 列。
如果显示 100% 或接近 100%,基本可以确定是磁盘满导致网站无法写入缓存、会话或上传文件。

接着用 du 找出哪个目录占用最大:

du -sh /* 2>/dev/null | sort -rh | head -20

这条命令会列出根目录下占用最大的前 20 个目录。
如果服务器有 /www/home 分区,也单独查一下:

du -sh /www/* 2>/dev/null | sort -rh | head -20

常见的大文件位置集中在 /var/log/www/wwwlogs/home/*/logs 以及 MySQL 的 binlog 目录。

安全清理系统日志

确认是日志占满后,不要直接 rm -rf 整个日志目录,否则可能影响正在运行的服务。
推荐用以下方式逐类清理。

清理 journal 日志

如果系统使用 systemd,journalctl 日志可能占用几个 GB。
先看占用:

journalctl --disk-usage

保留最近 3 天日志并限制总大小:

journalctl --vacuum-time=3d
journalctl --vacuum-size=200M

执行后再次用 df -h 确认释放效果。

清空而非删除正在写入的日志

对于 Nginx、Apache、MySQL 正在写入的 .log 文件,直接删除会导致服务继续写已删除的 inode,磁盘空间不会释放。
正确做法是清空内容:

> /www/wwwlogs/access.log
> /www/wwwlogs/error.log

或者用 truncate

truncate -s 0 /var/log/nginx/access.log

这样文件保留,空间立即释放,服务无需重启。

处理 MySQL binlog

如果 MySQL 开启了 binlog,日志会持续增长。
先登录 MySQL 查看:

SHOW BINARY LOGS;

清理 7 天前的 binlog:

PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

如果不需要 binlog,可在配置中注释 log-bin 并重启 MySQL,但生产环境建议保留并配置自动过期。

宝塔面板用户的操作路径

如果你用的是宝塔面板,可以不敲命令:

  1. 登录宝塔后台,点击左侧 文件,进入 /www/wwwlogs 目录,按大小排序,找到最大的日志文件。
  2. 右键选择 清空内容,不要点删除。
  3. 左侧 软件商店 → 找到 Nginx 或 Apache → 设置日志切割,开启按天切割并保留 7 天。
  4. 左侧 计划任务 添加一条 Shell 脚本任务,每天凌晨执行 find /www/wwwlogs -name "*.log" -mtime +7 -exec truncate -s 0 {} \;

配置自动轮转,避免再次写满

临时清理只能救急,长期要靠 logrotate。
系统一般自带 /etc/logrotate.d/ 目录,为 Nginx 新建配置:

cat > /etc/logrotate.d/nginx << 'EOF'
/www/wwwlogs/*.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        [ -f /www/server/nginx/logs/nginx.pid ] && kill -USR1 $(cat /www/server/nginx/logs/nginx.pid)
    endscript
}
EOF

测试配置是否生效:

logrotate -d /etc/logrotate.d/nginx

-d 是调试模式,只输出计划不实际执行。
确认无误后去掉 -d 再跑一次。

清理后验证网站是否恢复

释放空间后,按顺序检查:

  1. 再次执行 df -h,确认 Use% 降到 80% 以下。
  2. 重启 Web 服务:systemctl restart nginx 或宝塔面板中重启 Nginx。
  3. 浏览器访问网站,看是否正常打开。
  4. 查看错误日志尾部:tail -20 /www/wwwlogs/error.log,确认没有新的磁盘写入错误。

如果网站仍打不开,检查 PHP 或 MySQL 是否因磁盘满崩溃,需要单独重启对应服务。

容易踩坑的几个地方

  • 不要直接 rm 正在写入的日志文件,空间不会释放,必须用 > filetruncate
  • 清理前先确认日志没有审计或合规保留要求,必要时先备份再清。
  • dudf 结果不一致时,通常是有进程持有已删除文件,用 lsof | grep deleted 排查。
  • 数据库 binlog 不要手动删除文件,必须用 PURGE 命令,否则会导致主从同步异常。
  • 如果 /var/log 本身挂载在独立小分区,建议调整分区或把日志目录迁移到空间更大的分区。

遇到 Linux 磁盘满导致网站打不开时,按“确认磁盘 → 定位大文件 → 清空而非删除 → 配置轮转 → 验证恢复”的顺序处理,基本能解决大部分场景。
清理完记得把 logrotate 配上,否则过几天还会重演。

分享到:
上一篇
Linux服务器定时任务Crontab配置
下一篇
Linux防火墙firewalld配置
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意