logrotate如何处理并发性?

logrotate日志文件更新同时运行的情况下,会发生什么情况? 将新日志转换为历史日志文件吗? 或者它会留在当前的日志文件?

谢谢,

在循环过程中,日志消息可能会以旧的或新的文件结束,但是会以确定的方式结束。 Logrotate为每个日志文件大致如下:

  1. 将日志重命名为存档名称
  2. 指示应用程序重新打开其日志
  3. 可以压缩日志文件

如果消息在1和2之间被logging,这些将在重命名的日志中结束,因为重命名不影响打开的文件描述符(这也是为什么压缩只发生应用程序重新打开它们的日志之后)。 在2之后logging的消息将在新日志中结束。

下面是我的logrotateconfiguration的一个摘录,它描述了nginx的日志:

/var/log/nginx/*.log { compress delaycompress postrotate [ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid` endscript }