在 CentOS 中,syslog 日志轮转通常通过 logrotate 工具来管理。下面分几种常见情况说明。
CentOS 7/8 默认使用 rsyslog,日志轮转由 logrotate 完成。
常见日志位置:
/var/log/messages
/var/log/secure
/var/log/maillog
/var/log/cron
系统级配置:
/etc/logrotate.conf
syslog 专用配置:
/etc/logrotate.d/syslog
/etc/logrotate.d/syslog 常见内容:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
说明:
HUP 信号让 rsyslog 重新打开日志文件sharedscripts:所有日志轮转后只执行一次脚本logrotate -d /etc/logrotate.d/syslog
logrotate -f /etc/logrotate.d/syslog
daily # 每天
weekly # 每周
monthly # 每月
rotate 7 # 保留 7 个旧日志
compress # 压缩
delaycompress
missingok # 文件不存在不报错
notifempty # 空文件不轮转
create 0640 root utmp
示例(自定义):
/var/log/messages {
daily
rotate 30
compress
delaycompress
missingok
notifempty
postrotate
systemctl kill -s HUP rsyslog
endscript
}
如果是 CentOS 6:
/etc/logrotate.d/syslog
使用:
/bin/kill -HUP `cat /var/run/syslogd.pid`
查看 cron 是否运行 logrotate:
cat /etc/cron.daily/logrotate
查看日志:
/var/lib/logrotate/logrotate.status
如果你指的是 特定 syslog 实现(如 syslog-ng、rsyslog、journald) 或 自定义日志路径,可以告诉我具体场景,我可以给更精确的配置。