logrotate 如何工作?

logrotate 如何工作?

logrotate 在“旋转”日志文件时究竟做了什么?例如,它是否重命名现有文件并使用旧名称创建一个新文件?

本文描述了在日志轮换后重新启动服务,以便它可以使用新的日志文件。这仅仅是因为进程可能保留旧文件的打开句柄吗?如果我的进程每次写入日志时都会打开一个新的文件句柄,它会使用新的日志文件而不重新启动吗?

答案1

除非copytruncate使用,否则每次将日志重命名为新名称(例如,对数0),然后创建空文件。postrotate用于通知所有者进程需要重新打开日志。

如果进程是哑进程并且不能通过信号重新打开其日志,那么copytruncate应该使用 - 在这种情况下,日志文件的内容被复制而不是重命名,然后日志仅被截断。

如果进程在每次写入后重新打开日志(因此它应该在那之后关闭日志,否则打开的文件句柄将堆积起来,除非耗尽操作系统/用户限制),那么您可以忽略所有者进程通知。但这种情况很少见,因为当大量信息不断写入日志时,这种方法会危及日志写入器的性能。

相关内容