温馨提示×

centos syslog如何轮转

小樊
44
2026-09-27 02:42:52
栏目: 智能运维

在 CentOS 中,syslog 日志轮转通常通过 logrotate 工具来管理。下面分几种常见情况说明。


一、CentOS 7 及以后(rsyslog + logrotate)

CentOS 7/8 默认使用 rsyslog,日志轮转由 logrotate 完成。

1. 查看 syslog 相关日志文件

常见日志位置:

/var/log/messages
/var/log/secure
/var/log/maillog
/var/log/cron

2. logrotate 配置文件位置

系统级配置:

/etc/logrotate.conf

syslog 专用配置:

/etc/logrotate.d/syslog

3. 示例: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:所有日志轮转后只执行一次脚本

二、手动测试 syslog 轮转

1. 调试模式(不真正轮转)

logrotate -d /etc/logrotate.d/syslog

2. 强制执行轮转

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(旧版 syslogd)

如果是 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) 或 自定义日志路径,可以告诉我具体场景,我可以给更精确的配置。

0 踩