为什么我们应该一起使用create和copytruncate?

为什么我们应该一起使用create和copytruncate?

极客的东西有一个关于 的例子logrotatecopytruncate将复制并截断原始日志文件。

那我们为什么要使用呢create?原始日志文件尚未删除。

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}

另一个问题是有什么用maxage 100?该rotate 4指令将在 4 次循环后删除旧的日志文件。

答案1

这可能是一个错误,仅在该教程的一个示例中发现。所有其他示例都copytruncate没有该create选项。还logrotate 手册页指出实际上会被忽略:

copytruncate

创建副本后将原始日志文件截断为零大小,而不是移动旧日志文件并选择创建新日志文件。当某些程序无法被告知关闭其日志文件并因此可能继续永远写入(追加)到前一个日志文件时,可以使用它。请注意,复制文件和截断文件之间的时间片非常短,因此可能会丢失一些日志记录数据。使用此选项时,创建选项将不起作用,因为旧日志文件保留在原处。


关于maxage,我认为它很有用,例如对于可以在几个轮换期(天/周/月)内为空的日志文件 - 如果您使用notifempty,则空日志文件将不会被轮换,因此您可能仍拥有太旧的轮换文件。

相关内容