在 Debian 系统中,syslog 日志轮转主要是通过 rsyslog + logrotate 来完成的。下面分情况说明怎么配置和生效。
/var/log/syslog)logrotateDebian 默认已经有 syslog 的轮转配置:
cat /etc/logrotate.d/rsyslog
常见内容示例(简化):
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
}
rotate 7:保留 7 个旧日志daily:每天轮转compress:压缩旧日志(.gz)delaycompress:延迟一次压缩postrotate:轮转后重新加载 rsyslog,避免继续写旧文件sudo logrotate -f /etc/logrotate.d/rsyslog
查看结果:
ls -lh /var/log/syslog*
你可能会看到:
/var/log/syslog
/var/log/syslog.1
/var/log/syslog.2.gz
sudo nano /etc/logrotate.d/rsyslog
修改:
rotate 30
size 100M
注意:
daily 和 size,size 优先生效删除或注释:
# compress
# delaycompress
cat /etc/cron.daily/logrotate
cat /var/lib/logrotate/status
sudo logrotate -d /etc/logrotate.conf
(-d 是调试模式,不会真正执行)
不需要手动重启。
logrotate 配置中一般包含:
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
或者传统写法:
postrotate
systemctl kill -s HUP rsyslog
endscript
这会让 rsyslog 重新打开日志文件。
如果你还看到这些日志,它们通常也在同一个文件中一起轮转:
/var/log/auth.log
/var/log/mail.log
/var/log/kern.log
/var/log/daemon.log
cron 是否运行/etc/logrotate.d/rsyslog 是否存在df -h
du -sh /var/log/*
可能是:
如果你愿意,我可以:
直接告诉我你的 Debian 版本和使用场景即可。