В случае, если logrotate
выполняется одновременно с обновлением файла журнала, что произойдет? Будет ли новый журнал преобразован в архивный файл журнала? Или он останется в текущем лог-файле?
Во время ротации сообщения журнала могут попадать в старый или новый файл, но детерминированным образом. Logrotate делает примерно следующее для каждого файла журнала:
Если сообщения регистрируются между 1 и 2, они попадают в переименованный журнал, потому что переименование не влияет на дескрипторы открытых файлов (поэтому сжатие происходит только после приложения повторно открывают свои журналы). Сообщения, зарегистрированные после 2, попадут в новый журнал.
Вот отрывок из моей конфигурации logrotate, которая делает то, что я описал для журналов nginx:
/var/log/nginx/*.log {
compress
delaycompress
postrotate
[ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid`
endscript
}