Logrotate和打开文件


Answers:


7

对于那些不接受Rory所描述的不接受logrotate信号的应用程序,我使用了两种方法。

  1. 使用copytruncate选项
  2. 添加旋转后语句以重新启动服务

使用哪个决定取决于日志文件的大小和无缝日志的必要性。这将是您自己的风险分析。但是,举个例子,我在某些日志上使用了旋转后重新启动,而实际上我应该使用copytruncate。但是,文件通常是几场演出,而副本可能要花很长时间,因此最好每晚丢失一到两秒钟。


对不起,太晚了,但我想我可以为寻找这个问题的人节省一些时间。看一下解决此问题的另一种方法。unix.stackexchange.com/a/122942/189725
维克多

17

看起来我可能想要以下内容,但仍然对任何人对此主题的专业知识感兴趣:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
这就像在执行“ cp something.log something.log.1;:> something.log”一样,因此文件为空,但文件句柄没有中断。问题是两个命令之间的时间间隔,您可能会丢失一些日志
半径

5

logrotate将向进程发送正确的信号,告诉它重新打开日志文件。它可以直接用于apache或mysql之类的东西。

您可以在Apache的postrotate脚本中看到此内容。如果您有自己的守护程序,并且希望logrotate使用它,请确保它侦听某个信号并重新打开日志文件。

如果无法更改程序,则可以查看守护程序是否具有自动刷新日志的方法。或添加用于停止服务器的预旋转和用于重新启动服务器的后旋转。


好的,不要以为我会让开发人员这样做,但是很高兴知道标准是什么:-)
Kyle Brandt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.