在 Ubuntu 中,syslog 的轮转通常由 logrotate 管理。下面按常见场景说明。
Ubuntu 中常见的 syslog 实现:
/var/log/syslog/var/log/messages(部分版本)轮转配置由:
/etc/logrotate.d/rsyslog
控制。
cat /etc/logrotate.d/rsyslog
典型内容示例:
/var/log/syslog
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
含义:
rotate 4:保留 4 个旧日志weekly:每周轮转compress:压缩旧日志postrotate:轮转后通知 rsyslog 重新打开日志logrotate -d /etc/logrotate.d/rsyslog
logrotate -f /etc/logrotate.d/rsyslog
或对所有日志:
logrotate -f /etc/logrotate.conf
编辑:
sudo nano /etc/logrotate.d/rsyslog
修改为:
/var/log/syslog
{
daily
rotate 7
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
保存后测试:
logrotate -d /etc/logrotate.d/rsyslog
logrotate 由 cron 调用:
cat /etc/cron.daily/logrotate
一般无需手动改。
查看最近轮转记录:
cat /var/lib/logrotate/status
原因:没执行 postrotate
✅ 确保有:
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
然后重载 rsyslog:
sudo systemctl reload rsyslog
可:
rotatecompress如果你用的是 Ubuntu 22.04 / 24.04 或 systemd-journald + rsyslog,我也可以给你更精确的方案。