У меня есть файл журнала размером 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)"
Зависит от версии SQL Server и версии Windows Server 2012.
.
Далее по ссылке вы сами разместили .
Но насколько я могу судить, все версии Windows Server 2012 поддерживают все версии SQL Server 2016.
Полный список, как указано в ссылке выше:
-. 121---438058-SQL Server Enterprise
Windows Server 2016 Datacenter
Windows Server 2016 Standard
Windows Server 2012 R2 Datacenter
Windows Server 2012 R2 Standard
Windows Server 2012 R2 Essentials
Windows Server 2012 R2 Foundation
Windows Server 2012 Datacenter
Windows Server 2012 Standard
Windows Server 2012 Essentials
Windows Server 2012 Foundation
SQL Server Standard
Windows Server 2016 Центр обработки данных
Windows Server 2016 Standard
Windows Server 2012 R2 Datacenter
Windows Server 2012 R2 Standard
Windows Server 2012 R2 Essentials
Windows Server 2012 R2 Foundation
Windows Server 2012 Datacenter
Windows Server 2012 Standard
Windows Server 2012 Essentials
Windows Server 2012 Foundation
Windows 10 Home
Windows 10 Professional
Windows 10 Enterprise
Windows 8. 1
Windows 8.1 Профессиональная
Windows 8. 1 Enterprise
Windows 8
Windows 8 Pro
Windows 8 Enterprise
SQL Server Web
Windows Server 2016 Datacenter
Windows Server 2016 Standard
Windows Server 2012 R2 Datacenter
Windows Server 2012 R2 Standard
Windows Server 2012 R2 Essentials
Windows Server 2012 R2 Foundation
Windows Server 2012 Datacenter
Windows Server 2012 Standard
Windows Server 2012 Essentials
Windows Server 2012 Foundation
Решение действительно заключается в использовании logrotate
: он работает очень хорошо, а также может сжимать вращающийся бревно.
Если вы действительно не хотите использовать logrotate, вам нужно вручную скопировать соответствующий раздел вашего лог-файла в новый, а затем удалить старый.
Без подробного примера вашего формата лог-файла невозможно дать вам какой-либо совет по поводу требуемой команды командной оболочки.
В любом случае, вам действительно нужно использовать logrotate.
.Я хочу удалить журналы, которые старше 6 месяцев из этого файла.
Я не понимаю, что вы имеете в виду, но если бы мне пришлось угадывать, вы хотите удалить записи файла журнала из этого файл старше 6 месяцев. В таком случае это можно сделать, но это довольно необычный способ управления журналами в системе * nix.
То, что вы хотите сделать (если мое предположение верно), потребует синтаксического анализа каждой строки из этого файла и определение метки времени, чтобы проверить, находится ли дата входа в пределах вашего текущего 6-месячного окна. В зависимости от того, прошел / не прошел отметка времени, вы должны записать новый файл журнала без «старых» записей. Вы можете использовать инструменты оболочки, такие как grep
и head
и tail
, чтобы достичь этого, но в интересах производительности вы можете захотеть рассмотреть специально скомпилированное приложение C созданы для того, что вам нужно.
Я не знаю, на каком оборудовании находится этот файл журнала, но огромный размер этого файла журнала (6,8 гигабайта), вероятно, вызовет значительные проблемы с производительностью при анализе старых записей и записи новых. В большинстве случаев, когда возникают такие большие проблемы, это обычно является признаком того, что процесс требует пересмотра. Однако у этого правила есть и крайние случаи. Удачи.