Что меняет флаг --force относительно поведения logrotate?

Я пытаюсь выяснить, почему logrotate вращает только подмножество файлов журнала в папке при запуске без - force флаг. На странице руководства для logrotate --force просто сказано:

Указывает logrotate принудительно выполнить поворот, даже если он не думает об этом необходимо. Иногда это полезно после добавления новых записей в logrotate или, если старые файлы журнала были удалены вручную, так как новые файлы будут созданы, и регистрация будет продолжаться правильно.

Моя текущая теория состоит в том, что это связано с возрастом файла, поскольку неповоротные файлы записываются другим приложением, которое сбрасывает ctime файла журнала при каждой записи.

] Файл конфигурации /etc/logrotate.d/ выглядит следующим образом:

"/var/log/web_app/*.log" {
  su www-data www-data
  daily
  rotate 21
  maxsize 2G
  compress
  dateext
  copytruncate
  delaycompress
  missingok
}

Файл logrotate.status показывает (обратите внимание только на cgi.log на самом деле был повернут):

"/var/log/web_app/cgi.log" 2019-2-11-6:25:34
"/var/log/web_app/api.log" 2019-2-11-6:0:0
"/var/log/web_app/db.log" 2019-2-11-6:0:0

И logrotate --debug отчеты:

rotating pattern: "/var/log/web_app/*.log"  after 1 days (21 rotations)
empty log files are rotated, log files >= 2147483648 are rotated earlier, old logs are removed
switching euid to 33 and egid to 33
considering log /var/log/web_app/api.log
  log does not need rotating
considering log /var/log/web_app/db.log
  log does not need rotating
considering log /var/log/web_app/cgi.log
  log does not need rotating
switching euid to 0 and egid to 0

head /var/log/web_app/api.log показывает, что этот файл журнала не был повернут (3 дня назад на момент написания):

2019-02-08 16:50:54,492 - general (Process1-MainThread) - INFO - Starting instance of WEB_APP

stat в том же файле показывает:

  File: '/var/log/web_app/api.log'
  Size: 6307        Blocks: 16         IO Block: 4096   regular file
Device: ca11h/51729d    Inode: 751580      Links: 1
Access: (0644/-rw-r--r--)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2019-02-11 13:17:46.639667970 +0000
Modify: 2019-02-11 09:16:43.779964966 +0000
Change: 2019-02-11 09:16:43.779964966 +0000
 Birth: -
1
задан 11 February 2019 в 15:19
1 ответ

Каждый раз, когда logrotate определяет, нужно ли повернуть данный файл, флаг - force заставляет его безоговорочно ответить «да, этот файл необходимо повернуть» . Он просто заставляет logrotate игнорировать настроенные триггеры поворота - обратите внимание, что age не единственный возможный триггер, он работает таким же образом для size .

Если вы знаете, что ваше вращение работает с - force , но не без него, вы, вероятно, захотите продолжить с - debug и без - force . Вы получите пояснение к каждому обработанному файлу. Если вы использовали - force , вы не увидите объяснений, так как они будут пропущены (см. findNeedRotating в logrotate.c )

- флаг force не заставит logrotate сделать что-либо, чего он не делал бы в любом случае, если бы файл журнала устарел / заполнился для запуска настроенного условия поворота. Вы только заставляете это происходить прямо сейчас - потенциально удаляет самый старый файл, поэтому обычно вы не хотите запускать его повторно .

2
ответ дан 3 December 2019 в 20:10

Теги

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