在 CentOS 中,“message”通常指系统日志文件 /var/log/messages。对其进行“轮转(rotate)”一般是通过 logrotate 工具完成的。下面分几种常见情况说明。
CentOS 默认已安装 logrotate,并且自带了 /var/log/messages 的轮转配置。
cat /etc/logrotate.d/syslog
或
ls /etc/logrotate.d/
常见内容示例:
/var/log/messages {
missingok
notifempty
size 100M
create 0640 root root
rotate 7
compress
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
logrotate -d /etc/logrotate.conf # 模拟执行,不真正轮转
logrotate -f /etc/logrotate.conf # 强制轮转
daily / weekly / monthly:轮转周期size 100M:达到大小就轮转rotate 7:保留 7 个旧日志compress:压缩旧日志missingok:日志不存在不报错notifempty:空文件不轮转例如:每天轮转,保留 30 天,超过 50M 就转:
vi /etc/logrotate.d/syslog
修改为:
/var/log/messages {
daily
size 50M
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 root root
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
保存后测试:
logrotate -d /etc/logrotate.d/syslog
确保 rsyslog 服务在运行:
systemctl status rsyslog
轮转后需要让 rsyslog 重新打开日志文件(HUP 信号):
kill -HUP $(cat /var/run/syslogd.pid)
(通常 logrotate 配置里已经包含)
mv /var/log/messages /var/log/messages.1
touch /var/log/messages
chmod 640 /var/log/messages
chown root:root /var/log/messages
kill -HUP $(cat /var/run/syslogd.pid)
logrotate 是否运行:cat /var/lib/logrotate/logrotate.status
systemctl status crond
size 限制如果你指的是 某个具体服务(如 message broker、自定义 message 日志),可以告诉我具体路径或软件名,我可以给你更精确的轮转配置。