Сначала вы должны добавить --verbose в сценарий /etc/cron.daily/logrotate чтобы в следующий раз запустить дополнительную информацию, чтобы определить, какой журнал ротации вызывает проблему.
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate --verbose /etc/logrotate.conf'
Затем вы должны добавить опцию delaycompress в конфигурации logrotate.
Как пример, я добавляю конфигурацию nginx logrotate:
upstart закроет (и снова откроет) свой файл журнала, когда обнаружит, что файл удален. Однако, если вы посмотрите на то, что делает gzip, вы увидите, что он не удаляет файл до тех пор, пока он не записывает выходной файл. Это означает, что всегда есть условие состязания, при котором строки журнала могут быть потеряны при записи журнала строк в формате gzipping.
Вы можете отключить предупреждение, используя gzip --quiet, но на самом деле это не скрывает тот факт, что вы все равно можете потерять строки журнала.
Это означает, что delaycompress не является общим delaycompress этой delaycompress. Это конкретное решение для конкретной проблемы.
Реальным решением для этого, вероятно, является комбинация delaycompress и возможности отправить сигнал процессу. Это приведет к тому, что условия гонки исчезнут на практике (если вы не будете вращаться несколько раз в секунду :)).