我们只需要在 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
。我想知道这两个配置文件之间有什么区别以及如何解决它。
附言:
的所有其他配置文件都
/etc/logrotate.d/
具有相同的行为。当被迫读取它们时,它们将保留一个日志文件。我misc
在这里只提到它,因为它有许多vmware-network.log
文件,我可以很容易地看到它造成的差异。提到的日志文件的权限和用户/组
/var/log
是:-rw------- 1 root root vmware-network.log drwxrwxr-x 15 root syslog /var/log/
我尝试了不同的方法和不同的配置,但都不起作用。我还添加了
misc
logrotation 配置logrotate.conf
并执行了它,但输出仍然相同。我遇到的一个常见错误是:
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>
。
虽然这种方法似乎解决了您的问题,但我并不确切知道背后的原因,所以我无法给您提供参考理由。这是我通过反复试验发现的。