我在 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
...