在 Ubuntu 中,**syslog 的分割(轮转)**通常由 rsyslog + logrotate 共同完成。下面按常见场景说明。
/etc/rsyslog.conf、/etc/rsyslog.d/*.conf/var/log/syslog/var/log/messages(部分版本)/etc/logrotate.conf/etc/logrotate.d/rsyslog(最关键)cat /etc/logrotate.d/rsyslog
常见内容示例(Ubuntu 20.04/22.04):
/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 |
压缩旧日志 |
delaycompress |
延迟一次压缩 |
postrotate |
轮转后重启 rsyslog |
missingok |
日志不存在也不报错 |
/var/log/syslog
/var/log/syslog.1
/var/log/syslog.2.gz
/var/log/syslog.3.gz
sudo logrotate -f /etc/logrotate.d/rsyslog
查看结果:
ls -lh /var/log/syslog*
hourly
# daily
# weekly
# monthly
rotate 30
# compress
size 100M
⚠️ 注意:size 和 daily/hourly 同时存在时,size 优先级更高。
sudo cat /var/lib/logrotate/status
或查看 cron:
systemctl status cron
grep logrotate /var/log/syslog
Ubuntu 也支持 journalctl:
journalctl --disk-usage
限制大小:
sudo journalctl --vacuum-size=100M
或配置:
sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M
✅ syslog 分割 = rsyslog 写 + logrotate 切
✅ 核心配置文件:/etc/logrotate.d/rsyslog
✅ 修改后无需重启,logrotate 会定时执行
如果你愿意,可以告诉我:
我可以给你一份定制 logrotate 配置。