在 Ubuntu 中,**syslog 轮转(log rotation)**通常由 rsyslog + logrotate 配合完成。下面分情况说明。
/var/log/syslog/etc/logrotate.d/rsyslog/etc/logrotate.conf/etc/rsyslog.conf、/etc/rsyslog.d/*.confcat /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)postrotate:轮转后通知 rsyslog 重新打开日志文件sudo logrotate -vf /etc/logrotate.d/rsyslog
-v:显示详细信息-f:强制执行执行后你会看到类似:
/var/log/syslog.1
/var/log/syslog.2.gz
如果你使用的是 systemd-journal(不是 /var/log/syslog),轮转方式不同。
journalctl --disk-usage
编辑:
sudo nano /etc/systemd/journald.conf
关键参数:
[Journal]
SystemMaxUse=200M
SystemMaxFileSize=50M
MaxRetentionSec=1week
然后重启:
sudo systemctl restart systemd-journald
sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-time=7d
确认:
sudo systemctl status logrotate
sudo systemctl status rsyslog
确保 postrotate 脚本存在:
ls /usr/lib/rsyslog/rsyslog-rotate
| 日志类型 | 轮转方式 |
|---|---|
/var/log/syslog |
logrotate + rsyslog |
| journalctl | systemd-journald.conf |
| 自定义日志 | /etc/logrotate.d/ 新建配置 |
如果你愿意,可以告诉我:
lsb_release -a)我可以帮你定制一份最合适的配置。