我们只需要在 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
. 尽管它没有向我发送错误,但仍然没有完成工作。
任何帮助,将不胜感激。
我尝试在我自己的服务器(Ubuntu 20.04)上重现您的问题,并且我发现您应该
create
从主配置文件含义中删除指令/etc/logrotate.conf
并将其添加(如果需要)到/etc/logrotate.d/<CONFIG_FILE>
.尽管这种方法似乎解决了您的问题,但我并不确切知道其背后的原因是什么,因此我无法为您提供基于参考的原因。我通过反复试验发现了这一点。