logrotate如何处理打开的文件? 可以使用logrotate旋转进程打开的文件吗?
对于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使用它,那么确保它监听某个信号并重新打开日志文件。
如果你不能改变程序,那么你可以看到守护进程是否有办法自动刷新日志。 或者添加一个停止服务器的预转移,再次启动它。