У меня есть файл журнала размером 6,2 ГБ, который используется процессом, и он продолжает записывать журналы в этот файл. Теперь я не хочу чередовать журналы, но хочу очистить этот файл журнала. Я хочу удалить журналы старше 6 месяцев из этого файла. Можно ли с помощью сценария оболочки прочитать файл журнала и удалить журналы старше 6 месяцев?
ниже формат журнала
10.0.3.xx - - [17/Jun/2016:14:21:59 +0000] "GET /visible_topics HTTP/1.1" 200 581 "-" "help/97a1dd7eb981421b9719adde381560a78bed0b66 (ip-10-0-3-xxx; user1; 4411) ruby/2.3.0 (0; x86_64-linux)"
Решение действительно состоит в том, чтобы использовать logrotate
: он работает очень хорошо, а также может сжимать повернутый журнал.
Если вы действительно не хотите использовать logrotate, вам пришлось вручную скопировать / скопировать соответствующий раздел вашего файла журнала в новый, а затем удалить старый.
Без подробного примера формата вашего журнала невозможно дать вам совет о требуемой команде оболочки.
В любом случае, вам действительно стоит использовать logrotate.
Я хочу удалить журналы старше 6 месяцев из этого файла.
Я не понимаю, что вы имеете в виду, но если бы мне пришлось угадывать, вы хотите удалить файл журнала записи из этого файла старше 6 месяцев. Если это так, то это можно сделать, но это довольно необычный способ управления журналами в системе * nix.
То, что вы хотите сделать (если мое предположение верно), потребует синтаксического анализа каждой строки из этого файла и определения метки времени, чтобы проверить, находится ли дата входа в пределах вашего текущего 6-месячного окна. В зависимости от того, прошел / не прошел отметка времени, вы должны записать новый файл журнала без «старых» записей. Вы можете использовать инструменты оболочки, такие как grep
и head
и tail
для достижения этого, но в интересах производительности вы можете рассмотреть возможность создания специально скомпилированного приложения C, специально разработанного для ваших нужд.
Я не знаю, на каком оборудовании находится этот файл журнала, но сам размер этого файла журнала (6,8 гигабайта), вероятно, вызовет серьезные проблемы с производительностью при анализе старых записей и записи новых. В большинстве случаев, когда возникают такие большие проблемы, это обычно является признаком того, что процесс требует пересмотра. Однако у этого правила есть и крайние случаи. Удачи.