Как я могу увидеть весь файл, а также дождаться добавления большего количества данных в этот файл?

Я хочу прочитать весь файл и заставить его ждать ввода, точно так же, как tail -f, но с полным отображаемым файлом.

Длина этого файла всегда будет изменяться, потому что это файл .log.

Как я могу это сделать, если я не знаю длину файла?

18 голосов | спросил malworm 28 AMpThu, 28 Apr 2016 07:36:35 +030036Thursday 2016, 07:36:35

4 ответа


32

tail позволяет добавить -n для указания количества строк, отображаемых с конца, которые могут использоваться в сочетании с -f. Если аргумент для -n начинается с + это число строк с начала (0 и 1, отображающий весь файл, 2, указывающий пропустить первую строку, как указано в @Ben). Так просто:

tail -f -n +0 filename

Если ваши файлы журналов будут повернуты, вы можете добавить --retry (или объединить -f and --retry в -F, как предлагал @Hagen)

Также обратите внимание, что в графическом терминале вы можете использовать мышь и PageUp / PageDown для прокрутки назад в историю (при условии, что ваш буфер достаточно большой), это информация остается там, даже если вы используете Ctrl + C для выхода из tail. Если вы используете less, это гораздо менее удобно, и AFAIK вы должны использовать клавиатуру для прокрутки, и я не знаю, как сохранить less из deinitialising termcap, если вы забудете запустить его с помощью -X

ответил Anthon 28 AMpThu, 28 Apr 2016 08:04:50 +030004Thursday 2016, 08:04:50
34

Есть лучший способ добиться этого:

less +F <file>

Он покажет вам весь файл, имеет полную мощность less и будет ждать ввода нового. Если вы хотите прекратить ждать ввода и прочитать определенную часть, вы можете остановить ее с помощью ^C и возобновить с помощью F

Команда F всегда доступна в less, если вы решите следить за изменениями, открыв файл в less, нажав F включит его. Благодаря hiergiltdiestfu и подстановочный знак для указания этого.

ответил Leandros 28 PMpThu, 28 Apr 2016 15:25:47 +030025Thursday 2016, 15:25:47
3

В дополнение к ответу /u /Anthon вы можете сделать что-то вроде:

{ cat filename; tail -0f filename; }

Эта опция -0 для хвоста эквивалентна -n 0, что означает: dispaly 0 строк. Но -f отобразит новые строки.

Вам не нужны скобки { }. Я использовал их, потому что иногда вы хотите каким-то образом перенаправить filedescriptors. Например:

{ cat ; tail -0f -; } < /var/log/messages

Отмечено у Ben Milwood: у вас может быть состояние гонки, когда файл растет между окончанием операции cat и началом ---- +: = 7 =: + ----. Но опять же, это академическая проблема для академического решения.

ответил Otheus 28 AMpThu, 28 Apr 2016 11:18:25 +030018Thursday 2016, 11:18:25
2

watch должна сделать это за вас.

Вы также можете попробовать

less +FG 

У вас будет больше параметров с помощью команды less, чтобы прокручивать файл, как вы говорите, это большой файл.

ответил RajuBhai 28 AMpThu, 28 Apr 2016 08:12:49 +030012Thursday 2016, 08:12:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132