Logrotate:如何在 postrotate 中访问输出文件

ibz*_*ibz 15 logrotate

Nginx每天轮换日志(使用dateext)。旋转后,我想解析刚刚过去的那一天的文件,并编译一封包含 Nginx 服务器返回的错误数的电子邮件。

如何访问logrotate? 的postrotate / endscript 部分中的输出文件?

lar*_*sks 18

如果您没有使用“sharedscripts”指令,那么您的 postrotate 脚本会收到触发日志轮换的文件,作为 $1。如果您尝试使用具有多个 logrotate 节的通用脚本,这可能会有所帮助。也就是说,给出这样的东西:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}
Run Code Online (Sandbox Code Playgroud)

如果需要轮换任何匹配的文件,您的脚本将被调用,并将 $1 设置为“/var/log/sample1.log”、“/var/log/sample2.log”或“/var/log/sample3.log” “ 作为适当的。然后您可以附加“.1”以查找刚刚旋转的文件。

如果您使用“sharedscripts”选项,那么您的脚本将在 $1 设置为“/var/log/sample1.log /var/log/sample[23].log”(这将帮助您识别特定节但不是确切的文件)。

希望这给你一个开始的地方。请注意,这仅适用于 logrotate > v3.7.5。


mar*_*ark 4

如果您正在寻找的话,我不知道您可以使用任何变量。/var/log/somefile.1然而,在旋转日志之后,您应该根据您为旋转设置的配置(或类似配置)准确地知道文件已旋转到的名称。

如果您描述您想要解决的实际问题,也许会更容易回答?

  • 看起来 larsks 已经找到了你想要的东西。$1 是您要查找的变量。 (3认同)