Назад | Перейти на главную страницу

Использование tail -F для мониторинга огромного файла

Я столкнулся с требованием, когда мне нужно постоянно отслеживать живой (добавляемый) файл для предопределенного шаблона (например, сообщения об ошибке), я планирую использовать tail -F [FileName] | grep "pattern" и поместите его в какой-нибудь сценарий оболочки, чтобы уведомить меня. Меня беспокоит, как это будет работать с огромным файлом размером, скажем, 50 ГБ, и я хочу понять, сколько системных ресурсов будет потреблять такое решение. Вкратце, как работает tail / обрабатывает файл с точки зрения использования ресурсов.

tail не читает весь файл. Когда это жестяная банка, он начинается в конце, а затем возвращается, пока не достигнет ожидаемого количества строк. Однако это делает читать все, когда не может искать, например, чтение из трубы.

Это может не относиться к вам, но имейте в виду, что tail -f отслеживает дескриптор файла не имя файла. Поэтому, если у вас, например, ротация журнала, она просто остановится, потому что исходный файл перестал изменяться.