Debian 系统日志占满磁盘,通常是因为 日志文件没有被正确轮转(rotate)或清理,或者某个服务在疯狂写日志。下面按常见原因 → 排查 → 解决方法来说明。
Debian 使用 rsyslog / systemd-journald + logrotate 管理日志。
如果:
logrotate 没运行日志就会无限增长。
systemd-journald 默认可能 不限制日志大小。
查看:
journalctl --disk-usage
如果显示几个 GB,就说明 journal 占满了。
例如:
日志文件会迅速变大。
你以为删了日志,但空间没释放:
rm /var/log/syslog
如果 rsyslog 仍占用该文件句柄,磁盘空间不会释放。
/ 或 /var 分区太小df -h
如果 / 或 /var 使用率 100%,继续。
du -h /var/log | sort -hr | head -20
常见大文件:
/var/log/syslog/var/log/kern.log/var/log/messages/var/log/journal/*journalctl --disk-usage
lsof +L1
如果看到 /var/log/xxx (deleted),说明问题在这里。
sudo journalctl --vacuum-size=200M
或按时间:
sudo journalctl --vacuum-time=7d
永久限制大小:
sudo nano /etc/systemd/journald.conf
修改:
SystemMaxUse=200M
RuntimeMaxUse=100M
然后:
sudo systemctl restart systemd-journald
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
⚠️ 不要用 rm,用 truncate 更安全。
检查是否运行:
cat /var/lib/logrotate/status
手动执行:
sudo logrotate -vf /etc/logrotate.conf
如果报错,说明配置有问题。
找到进程:
lsof +L1
重启对应服务(如 rsyslog):
sudo systemctl restart rsyslog
如果是某个服务疯狂写日志:
journalctl -u 服务名
然后:
Storage=persistent
SystemMaxUse=200M
MaxRetentionSec=2week
确保 /etc/logrotate.d/rsyslog 存在并正常。
Debian 日志占满磁盘,90% 是因为 journal 或 logrotate 问题,用
journalctl --disk-usage+du -h /var/log基本能定位。
如果你愿意,可以把下面两条命令的输出贴出来,我可以直接帮你判断是哪一种情况:
df -h
journalctl --disk-usage