Как logrotate обрабатывает параллелизм?

У меня была эта ошибка. Для меня это было, потому что веб-сервер выполнял при пользователе "апача", и это не имело полномочий чтения на файле, к которому это пыталось получить доступ - пробуют chown'ing каталог "апачу".

5
задан 29 October 2019 в 21:11
1 ответ

Во время ротации сообщения журнала могут оказаться в либо старый, либо новый файл, но детерминированным образом. Logrotate делает примерно следующее для каждого файла журнала:

  1. Переименуйте журнал в заархивированное имя
  2. Сообщите приложению о повторном открытии своих журналов
  3. При необходимости сжимайте файл журнала

Если сообщения регистрируются между 1 и 2, они попадают в переименованный журнал, потому что rename не влияет на дескрипторы открытых файлов (именно поэтому сжатие происходит только после того, как приложения повторно открывают свои журналы). Сообщения, зарегистрированные после 2, попадут в новый журнал.

Вот отрывок из моей конфигурации logrotate, которая делает то, что я описал для журналов nginx:

/var/log/nginx/*.log {
    compress
    delaycompress
    postrotate
        [ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid`
    endscript
}
12
ответ дан 3 December 2019 в 01:04

Теги

Похожие вопросы