/var/log/syslog 不旋转

/var/log/syslog 不旋转

尽管 logrotate 配置存在,但我们的日志文件/var/log/syslog似乎没有旋转:/etc/logrotate.d/rsyslog

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

你看,syslog日志文件有 600M,没有旧文件或压缩文件。

-rw-r-----  1 syslog   adm    600M Nov  9 20:30 syslog

答案1

我发现了问题,不知何故su指令被从中删除了/etc/logrotate.conf,因此需要添加:

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

答案2

我也用了同样的su方法@Justin 提到,除了我必须将它添加到特定于服务的 logrotate 配置文件中(而不是全局 logrotate 配置文件):

  1. su从全局 logrotate 配置文件中确定要使用的用户/组

    grep 'su ' "/etc/logrotate.conf"

  2. 编辑 rsyslog logrotate 配置

    vi "/etc/logrotate.d/rsyslog"

  3. su步骤 1 中的行添加到文件顶部:

    su root syslog

  4. 测试错误

    logrotate --debug --force /etc/logrotate.d/rsyslog 2>&1 | grep -i cron

答案3

logrotate我遇到了类似的问题,这似乎是由于配置和新systemd替代品之间的某种不兼容造成的sysvinit.d

我不得不编辑/etc/logrotate.d/rsyslog并替换

invoke-rc.d rsyslog rotate > /dev/null

systemctl kill -s HUP --kill-who=main rsyslog.service

前一行看起来正在工作,并且这么说,但是没有设法让 rsyslog 重新打开其日志文件。

答案4

基于塞缪尔的评论, 修改的/usr/lib/rsyslog/rsyslog-rotate

#!/bin/sh

if [ -d /run/systemd/system ]; then
    systemctl kill -s HUP --kill-who=main rsyslog.service
else
    invoke-rc.d rsyslog rotate > /dev/null
fi

相关内容