如何排除 /etc/logrotate.d/ 下的服务以与主 logrotate 作业一起运行

如何排除 /etc/logrotate.d/ 下的服务以与主 logrotate 作业一起运行

我在 logrotate.d 下有一个文件,我不想在主 logrotate 运行时运行它。我为此创建了一个单独的作业/etc/crontab

45 23   * * *   root    mv /var/log/RemoteSystems/*/*.log /var/log/Archiv/ && logrotate /etc/logrotate.d/test  

该作业会将文件从一个目录移动到另一个目录,然后应用 logrotate。我希望该作业与 中的主 logrotate 作业分开运行/etc/crontab。问题是由于“test”位于 下/etc/logrotate.d/,它将再次与主 logrotate 一起运行。我是否可以在 logrotate.conf 中插入任何命令来排除“test”的运行?我知道如果我有 中的“test”文件/etc/logrotate.d,就不会发生这种情况,但我想将“test”保留在同一路径上。

答案1

如果您查看手册man logrotate.conf,您可以阅读查找tabooext选项,它使您能够排除一些具有特定扩展名的文件。

tabooext [+] list
     The current taboo extension list is changed (see the include directive for information on the taboo extensions). If a + precedes the
     list of extensions, the current taboo extension list is augmented, otherwise it is replaced. At startup, the  taboo  extension list
     contains  .rpmsave,  .rpmorig,  ~, .disabled, .dpkg-old, .dpkg-dist, .dpkg-new, .dpkg-bak, .dpkg-del, .cfsaved, .ucf-old, .ucf-dist,
     .ucf-new, .rpmnew, .swp, .cfsaved, .rhn-cfg-tmp-*

您可以选择其中一个默认排除的扩展名.disabled,或者您可以指定自己的附加扩展名,例如:

tabooext + .test

您需要做的就是将文件重命名/etc/logrotate.d/test为具有以下任何扩展名,例如/etc/logrotate.d/test.disabled

答案2

您可以按如下方式编辑配置文件:

include /etc/logrotate.d

include /etc/logrotate.d/*.conf

这应该只让以 结尾的文件.conf/etc/logrotate.d/logrotate 拾取,但不包括你的test文件

如果你已经有/etc/logrotate.d/被 logrotate 使用的文件,这些文件需要更新以包含.conf

答案3

通过将文件放在目录test/etc/logrotate.d/,它将被 logrotate 自动拾取。

如果您想手动运行它,您可以强制它对特定文件执行 logrotate,无论位置如何。

logrotate --force /tmp/test

/tmp/test文件的新位置在哪里。

答案4

在我写这篇文章的时候,我在 Arch 上使用 logrotate 版本 3.20.1,手册页中有一项功能我怀疑是自 2017 年这个问题新出现以来就添加的。除此之外,tabooext现在还有一项功能taboopat,它将排除与该列表中的 glob 模式匹配的任何文件。例如,将以下内容添加到/etc/logrotate.conf

taboopat + .gitignore

结果是:

# logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
Ignoring .gitignore, because of .gitignore pattern match
reading config file snapper
reading config file syslog-ng
...

相关内容