极客的东西有一个关于 的例子logrotate
。copytruncate
将复制并截断原始日志文件。
那我们为什么要使用呢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
,则空日志文件将不会被轮换,因此您可能仍拥有太旧的轮换文件。