logrotate如何处理打开的文件?可以logrotate旋转进程已打开的文件吗?
logrotate如何处理打开的文件?可以logrotate旋转进程已打开的文件吗?
Answers:
对于那些不接受Rory所描述的不接受logrotate信号的应用程序,我使用了两种方法。
使用哪个决定取决于日志文件的大小和无缝日志的必要性。这将是您自己的风险分析。但是,举个例子,我在某些日志上使用了旋转后重新启动,而实际上我应该使用copytruncate。但是,文件通常是几场演出,而副本可能要花很长时间,因此最好每晚丢失一到两秒钟。
看起来我可能想要以下内容,但仍然对任何人对此主题的专业知识感兴趣:
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.
logrotate将向进程发送正确的信号,告诉它重新打开日志文件。它可以直接用于apache或mysql之类的东西。
您可以在Apache的postrotate脚本中看到此内容。如果您有自己的守护程序,并且希望logrotate使用它,请确保它侦听某个信号并重新打开日志文件。
如果无法更改程序,则可以查看守护程序是否具有自动刷新日志的方法。或添加用于停止服务器的预旋转和用于重新启动服务器的后旋转。