从“/etc/logrotate.conf”和“/etc/logrotate.d/*conf”文件读取时,Logrotation 有不同的行为

从“/etc/logrotate.conf”和“/etc/logrotate.d/*conf”文件读取时,Logrotation 有不同的行为

我们只需要在 Ubuntu 20.04 服务器中保留每个服务的一个日志文件。我对/etc/logrotate.conf文件进行了如下修改:

weekly
su root adm
rotate 0
create
ifempty
include /etc/logrotate.d

对于特定的服务,例如misc生成vmware-network.log日志文件,我有一个配置文件,/etc/logrotate.d/misc其中内容如下:

/var/log/vmware-network.*.log {
  su root root
  rotate 0
  daily
  missingok
  ifempty
}

现在,当我使用 测试我的 logrotation 时logrotate -fv /etc/logrotate.conf,它不会删除任何vmware-network.*.log文件,只是将它们的大小设为零。但是当我使用 时logrotate -fv /etc/logrotate.d/misc,它只保留一个vmware-network.log文件并删除其他编号的日志文件。

logrotate由于它正在从默认配置文件读取,因此无法完成我想要的工作/etc/logrotate.conf。我想知道这两个配置文件之间有什么区别以及如何解决它。

附言:

  1. 的所有其他配置文件都/etc/logrotate.d/具有相同的行为。当被迫读取它们时,它们将保留一个日志文件。我misc在这里只提到它,因为它有许多vmware-network.log文件,我可以很容易地看到它造成的差异。

  2. 提到的日志文件的权限和用户/组/var/log是:

    -rw-------  1 root   root   vmware-network.log  
    drwxrwxr-x 15 root syslog   /var/log/
    
  3. 我尝试了不同的方法和不同的配置,但都不起作用。我还添加了misclogrotation 配置logrotate.conf并执行了它,但输出仍然相同。

  4. 我遇到的一个常见错误是:

    error: skipping "/var/log/vmware-network.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
    

    su为不同的配置文件设置了不同的指令,例如su root adm/etc/logrotate.d/rsyslog虽然它没有向我发送错误,但仍然没有完成工作。

任何帮助,将不胜感激。

答案1

我尝试在我自己的服务器(Ubuntu 20.04)上重现您的问题,我发现您应该create从主配置文件中删除指令/etc/logrotate.conf并将其(如果需要)添加到现有的子配置文件中/etc/logrotate.d/<CONFIG_FILE>

虽然这种方法似乎解决了您的问题,但我并不确切知道背后的原因,所以我无法给您提供参考理由。这是我通过反复试验发现的。

相关内容