Как logrotate обрабатывает открытые файлы? Может ли logrotate вращать файлы, открытые процессом?
Как logrotate обрабатывает открытые файлы? Может ли 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.
Вы можете увидеть это в постротационном скрипте для apache. Если у вас есть собственный демон и вы хотите, чтобы logrotate работал с ним, убедитесь, что он прослушивает определенный сигнал и повторно открывает файлы журнала.
Если вы не можете изменить программу, вы можете увидеть, есть ли у демона способ автоматической очистки журналов. Или добавьте prerotate, который останавливает сервер, и postrotate, который запускает его снова.