在 Linux 系统中,syslog 的“分割”通常指日志轮转(Log Rotation),最常用的是 logrotate 工具。下面按常见场景给你一个完整说明。
/var/log/messages / /var/log/syslog)| 发行版 | 主要 syslog 文件 |
|---|---|
| Debian / Ubuntu | /var/log/syslog |
| RHEL / CentOS / Rocky | /var/log/messages |
| 通用 | /var/log/auth.log、/var/log/kern.log |
/etc/logrotate.conf # 主配置
/etc/logrotate.d/ # 各服务配置
syslog 通常由:
/etc/logrotate.d/rsyslog
或
/etc/logrotate.d/syslog
/var/log/syslog
/var/log/messages
/var/log/auth.log
/var/log/kern.log
{
daily # 每天轮转
rotate 7 # 保留 7 个备份
missingok # 文件不存在不报错
notifempty # 空文件不轮转
compress # 压缩旧日志
delaycompress # 延迟压缩
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
}
| 参数 | 含义 |
|---|---|
| daily / weekly | 轮转周期 |
| rotate N | 保留 N 个旧日志 |
| compress | gzip 压缩 |
| missingok | 文件不存在不报错 |
| notifempty | 空文件不轮转 |
| postrotate | 轮转后执行命令(如重载 rsyslog) |
logrotate -vf /etc/logrotate.d/rsyslog
-v:显示过程-f:强制执行ls -lh /var/log/syslog*
示例输出:
syslog
syslog.1
syslog.2.gz
mv /var/log/syslog /var/log/syslog.1
kill -HUP $(cat /var/run/rsyslogd.pid)
⚠️ 仅用于应急,不会自动压缩和清理
如果是 systemd-journal,不是传统 syslog:
journalctl
journalctl --vacuum-size=500M
或编辑:
/etc/systemd/journald.conf
SystemMaxUse=500M
/etc/cron.daily/logrotate
postrotate 重载 rsyslog✅ 生产环境标准做法
logrotate/etc/logrotate.d/rsyslog如果你愿意,可以告诉我:
我可以帮你定制一套最合适的 syslog 分割方案。