Linux日志清理磁盘爆满:从排查到根治的完整步骤

Linux日志清理磁盘爆满:从排查到根治的完整步骤

日志文件不知不觉吃掉大量磁盘空间,是服务器运维中最常见的问题之一。
本文针对零基础用户,带您安全且高效地清理Linux日志,并设置自动机制避免再次爆满。

1. 快速找出是哪些日志撑满了磁盘

先用 df -h 查看磁盘整体使用率,确定哪个分区满了(通常是 / 或 /var)。
再使用 du 命令逐层定位大目录:

# 查看 /var 下各目录大小,排序显示前10
sudo du -sh /var/* | sort -rh | head -10

常见日志路径:

  • /var/log/syslog 或 /var/log/messages
  • /var/log/nginx/ 或 /var/log/httpd/(Web服务日志)
  • /var/log/journal/(systemd日志)
  • /var/log/btmp、/var/log/wtmp(登录日志)

如果发现某个日志文件体积异常大(比如几个GB),说明它就是罪魁祸首。

2. 安全清理日志并释放空间

不要直接删除日志文件! 正确的做法是清空内容:

# 清空指定日志文件(保留文件本身,不影响正在写入的进程)
sudo truncate -s 0 /var/log/syslog

如果日志被进程占用,rm 后空间可能不会立即释放,而 truncate 是更安全的方案。
对于 systemd 日志(journal),可以按时间或大小清理:

# 只保留最近3天的日志
sudo journalctl --vacuum-time=3d

# 限制日志总大小不超过200M
sudo journalctl --vacuum-size=200M

清理后立即用 df -h 验证空间是否释放。
若释放不明显,重启日志服务(如 sudo systemctl restart rsyslog)可释放已删除日志占用的文件句柄。

3. 设置日志轮转,防止再次爆满

Linux 自带的 logrotate 可以自动压缩、切割和清理日志。
配置文件在 /etc/logrotate.conf 和 /etc/logrotate.d/ 目录下。
以 Nginx 为例,修改 /etc/logrotate.d/nginx:

/var/log/nginx/*.log {
    daily          # 每天轮转一次
    rotate 7       # 保留最近7个归档
    compress       # 启用压缩
    delaycompress  # 延迟压缩(下次轮转时压缩上一次的)
    missingok      # 日志文件丢失不报错
    notifempty     # 日志为空则不轮转
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

修改后可以用 sudo logrotate -d /etc/logrotate.d/nginx 模拟执行。/etc/logrotate.conf 中的全局参数(如 rotate 4、weekly)会作为默认值。
建议针对大型日志(如 /var/log/syslog)单独配置轮转策略。

4. 三个常见避坑指南

  • 不要随意删除 /var/log/*.gz 或 .1 等旧归档:这些是 logrotate 产生的压缩历史,删除后无法追查。如果空间紧张,应通过调 rotate 数量控制保留份数。
  • 不要用 rm 删除正在被写入的日志:即使 rm 了,空间也要等进程关闭文件才会释放。始终优先用 truncate -s 0。
  • journald 日志默认无限制:强烈建议在 /etc/systemd/journald.conf 中设置 SystemMaxUse=500M 限制总大小,然后执行 sudo systemctl restart systemd-journald。

5. 验证清理效果并养成日常检查习惯

清理后执行 df -h 确认空间回升。
可以写一个简单监控脚本:

#!/bin/bash
THRESHOLD=80
USE=$(df / | awk 'NR==2{print $5}' | sed 's/%//')
if [ $USE -gt $THRESHOLD ]; then
    echo "磁盘使用率 $USE% 超过 $THRESHOLD%,建议检查日志" | mail -s "磁盘告警" admin@example.com
fi

配合 cron 定时执行(如每天8点)。
长远来看,建议定期用 du -sh /var/log/* 观察增长趋势,并结合 logrotate 和 journald 限制,让 Linux日志清理磁盘爆满 不再成为突发问题。

如果你也遇到类似情况,按照上述步骤操作即可快速恢复。
遇到异常时可以回溯每个步骤的输出,大部分问题都能定位到未正确轮转或误删日志导致的残留文件句柄。

分享到:
上一篇
一文搞懂WordPress用户权限管理:角色分配与安全设置
下一篇
Docker部署Jenkins持续集成
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意