在 Ubuntu 上,syslog 的轮转通常由 logrotate 管理。下面按「原理 → 常见配置 → 手动/自动操作」说明。
Ubuntu 中常见的 syslog 实现:
/var/log/syslog/var/log/messages(部分版本)轮转工具:
logrotate/etc/logrotate.conf/etc/logrotate.d/syslog 的轮转规则通常在:
/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:压缩旧日志delaycompress:延迟压缩(方便当前写入)postrotate:轮转后通知 rsyslog 重新打开日志sudo logrotate -f /etc/logrotate.d/rsyslog
或对整个系统:
sudo logrotate -f /etc/logrotate.conf
查看执行详情:
sudo logrotate -d /etc/logrotate.d/rsyslog
(-d 是 dry-run,不真正执行)
logrotate 由 cron / anacron 每天执行:/etc/cron.daily/logrotate
默认检查频率:
daily / weekly / monthly检查:
sudo systemctl status logrotate
sudo journalctl -u logrotate
可能是:
修改配置:
size 100M
或:
maxsize 50M
/var/log/syslog
{
daily
size 50M
rotate 7
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
如果你愿意,可以告诉我:
22.04 / 20.04 / 18.04)rsyslog 还是 syslog-ng我可以给你更精确的配置。