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

Maj*_*imi 47 logrotate

Geek Stuff有一个关于logrotate. copytruncate将复制并截断原始日志文件。

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

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*555 67

这可能是一个错误,它仅在该教程的一个示例中找到。所有其他示例都copytruncate没有create选项。此外logrotate 手册页指出,将实际忽略

copytruncate

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


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