Является ли `tail -f` более эффективным, чем` less + F`?


34

В этой статье указаны некоторые причины использования less +Fболее tail -f. Большинство причин касаются функций , а не технических причин: less +Fможно выделять, искать, перемещаться по файлу.

Как насчет технических причин?

AFAIK, lessиспользует опрос каждую секунду для обновления файла, в то время как tail, как определено POSIX, используется цикл, который спит в течение 1 секунды и копирует любые доступные байты. Этого достаточно, но POSIX также поощряет реализацию использовать более эффективный метод. По крайней мере, GNU tail использует inotify , поэтому он более эффективен.

less также хранит содержимое файла в памяти, поэтому с огромным файлом, размером в несколько гигабайт, он может замедлить работу компьютера.

Итак, есть ли какие - либо другие технические причины , чтобы использовать tail -fболее less +F?

Ответы:


37

Я думаю, что вы охватили основной вопрос: less +Fчитает весь файл, тогда как во многих системах tail -fчитает только конец файла, и даже в системах, где он читает весь файл, по крайней мере, он не сохраняет весь файл в памяти. Это делает less +Fнепрактичным для очень больших файлов. Однако вы можете запустить less -n +F, что приведет lessк чтению только конца файла, за счет того, что номера строк не отображаются.

Под капотом между less -n +Fи tail -fосновным отличием является то, что tailна некоторых платформах используется служба уведомлений об изменениях файлов (например, inotify в Linux), которая позволяет мгновенно отображать новые данные, тогда как отображение новых данных lessможет занять до 1 секунды. потому что он проверяет новые данные в цикле и спит между проверками.

Еще одно различие между less +Fи tail -fзаключается в том, что lessон вызывает входной фильтр, но обычно это не влияет на файлы журналов.

Техническим отличием less +Fявляется то, что вы можете заставить его обрезать строки на ширину экрана с помощью этой -Sопции, тогда как у tailвас нет выбора, кроме как отображать всю строку независимо от ее длины.

С точки зрения интерфейса, нет особого преимущества в использовании less. tail -fПолезно заметить, когда что-то происходит. Вы даже можете запустить его в фоновом режиме. Если что-то происходит, и вы хотите посмотреть на файл более подробно, вы можете открыть его lessв другом терминале.

Если вы хотите посмотреть несколько файлов, то стоит выбрать несколько вариантов. Даже для одного файла у multitail есть дополнительные отличные функции, такие как фильтрация и раскраска.


С очень большим файлом, 'less -n 99.99p + F' мешает меньше читать весь файл?
cuonglm

1
@cuonglm Ах, да, это так. Достаточно лишь less -nтого, что меньше использует стратегию поиска-конца-чтения.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.