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日志清理磁盘爆满 不再成为突发问题。
如果你也遇到类似情况,按照上述步骤操作即可快速恢复。
遇到异常时可以回溯每个步骤的输出,大部分问题都能定位到未正确轮转或误删日志导致的残留文件句柄。