Як logrotate обробляє відкриті файли? Чи може логротати обертати файли, у яких відкрився процес?
Як logrotate обробляє відкриті файли? Чи може логротати обертати файли, у яких відкрився процес?
Відповіді:
Для тих програм, які не приймають сигнали від логротату, як описано у Рорі, я використовую пару методів.
Рішення, який використовувати, залежить як від розміру файлів журналів, так і від необхідності безшовних журналів. Це буде аналіз ризику з вашого боку. Однак, щоб навести приклад, я використовую перезапуск після обертання в певних журналах, де я фактично повинен використовувати copytruncate. Однак файли часто бувають декількома концертами, і копія може зайняти досить тривалий час, щоб втратити секунду чи дві щовечора.
Схоже, я, можливо, хотів би наступного, але все ж зацікавився чиїмсь досвідом у цій темі:
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.
logrotate відправить правильний сигнал в процес, щоб повідомити йому про повторне відкриття файлів журналів. Це працює з коробки для таких речей, як apache або mysql.
Ви можете бачити це в сценарії postrotate для apache. Якщо у вас є власний демон, і ви хочете, щоб логротат працював з ним, тоді переконайтеся, що він прослуховує певний сигнал і знову відкриває файли журналу.
Якщо ви не можете змінити програму, то ви зможете побачити, чи є у демона спосіб автоматичного очищення журналів. Або додати преротат, який зупиняє сервер, і postrotate, який запускає його знову.