Логратуйте та відкрийте файли


21

Як logrotate обробляє відкриті файли? Чи може логротати обертати файли, у яких відкрився процес?

Відповіді:


7

Для тих програм, які не приймають сигнали від логротату, як описано у Рорі, я використовую пару методів.

  1. Використовуйте опцію copytruncate
  2. Додайте оператор після обертання, щоб перезапустити послугу

Рішення, який використовувати, залежить як від розміру файлів журналів, так і від необхідності безшовних журналів. Це буде аналіз ризику з вашого боку. Однак, щоб навести приклад, я використовую перезапуск після обертання в певних журналах, де я фактично повинен використовувати copytruncate. Однак файли часто бувають декількома концертами, і копія може зайняти досить тривалий час, щоб втратити секунду чи дві щовечора.


Вибачте за те, що запізнитись занадто пізно, але, мабуть, я міг би заощадити час іншим, хто шукає цю проблему. Погляньте на інший підхід для вирішення цього питання. unix.stackexchange.com/a/122942/189725
Віктор

17

Схоже, я, можливо, хотів би наступного, але все ж зацікавився чиїмсь досвідом у цій темі:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
Це як зробити "cp something.log something.log.1;:> something.log", щоб файл вийшов порожнім, але файл файлу на ньому не порушується. Проблема полягає в часі між двома командами, ви можете втратити рядок журналів
радіус

5

logrotate відправить правильний сигнал в процес, щоб повідомити йому про повторне відкриття файлів журналів. Це працює з коробки для таких речей, як apache або mysql.

Ви можете бачити це в сценарії postrotate для apache. Якщо у вас є власний демон, і ви хочете, щоб логротат працював з ним, тоді переконайтеся, що він прослуховує певний сигнал і знову відкриває файли журналу.

Якщо ви не можете змінити програму, то ви зможете побачити, чи є у демона спосіб автоматичного очищення журналів. Або додати преротат, який зупиняє сервер, і postrotate, який запускає його знову.


Гаразд, не думай, що я змушу розробників це зробити, але приємно знати, що таке стандарт :-)
Кайл Брандт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.