在 Linux 中,syslog 的分割(轮转)通常由 logrotate 完成,而不是直接手动切割。下面按“常见场景 → 方法 → 示例”来说明。
不同发行版日志位置略有差异:
| 发行版 | syslog 文件 |
|---|---|
| Debian / Ubuntu | /var/log/syslog |
| RHEL / CentOS | /var/log/messages |
| 通用 | /var/log/auth.log |
logrotate(推荐 ✅)| 系统 | 配置文件 |
|---|---|
| 通用 | /etc/logrotate.conf |
| 细分规则 | /etc/logrotate.d/ |
| syslog 通常在 | /etc/logrotate.d/rsyslog 或 /etc/logrotate.d/syslog |
/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 # 压缩旧日志
notifempty # 空日志不轮转
postrotate # 轮转后重新加载 rsyslog
如果你临时需要:
sudo mv /var/log/syslog /var/log/syslog.1
sudo systemctl restart rsyslog
⚠️ 注意:
例如:超过 100MB 就轮转
/var/log/syslog {
size 100M
rotate 5
compress
missingok
notifempty
postrotate
systemctl restart rsyslog
endscript
}
sudo logrotate -vf /etc/logrotate.d/rsyslog
查看是否生成:
ls -lh /var/log/syslog*
如果是 systemd-journal:
# 查看日志大小
journalctl --disk-usage
# 限制大小
journalctl --vacuum-size=100M
配置文件:
/etc/systemd/journald.conf
postrotate 重新加载 syslogrotate 设置太小missingok + 路径错误你可以补充:
rsyslog / syslog-ng / systemd-journal我可以直接给你一份 可直接复制粘贴的 logrotate 配置。