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