Пагинация с командой tail -f
Я пытаюсь завершить файл с нумерацией страниц:
tail -f foo.txt | more
Это работает нормально до тех пор, пока файл не получит, скажем, 200 строк tail
Команда состоит в том, чтобы перейти к концу файла, в этот момент я теряю след в конце журнала.
Есть ли способ избежать этого?
3 ответа
Мое решение таково:
less some-file.log
Затем в less
Я нажал Shift+F. Это вызывает less
обновить с файлом. Чтобы прокрутить назад, просто нажмите Ctrl+C.
Использование tail -f log.txt | less
вместо. На моем быстром тестировании, он обновляется, чтобы перейти к новой информации, и вы можете перейти вверх или вниз. Т.е. меньше обновлений в качестве выходного буфера, статически не ссылающихся на исходный контент.
Или небольшое изменение с меньшим количеством движущихся частей (без трубы) - решение, которое Дельфин упомянул в комментарии - less +F log.txt
хороший способ пойти Вот что говорит страница руководства F
:
F Scroll forward, and keep trying to read when the end of file is reached. Normally this command would be used when already at the end of the file. It is a way to monitor the tail of a file which is growing while it is being viewed. (The behavior is similar to the "tail -f" command.)
Другими словами, это идеально подходит для этого случая.
У него есть одна проблема, которая мешает ему быть моим любимым. Дополнение как less +F daemon.log | egrep session
не работает
Одна из причин, по которой я продолжаю использовать каналы в своей повседневной работе с командной строкой, заключается в том, что в сочетании с историей очень просто вернуться назад, добавить канал и изменить поведение вашей команды в зависимости от данных. Если простой tail -f log
не работает из-за объема данных, прокручиваемых с экрана, пощечина меньше. Если объем слишком большой, но вы видите подсказки нужных вам линий, добавьте трубу в grep или egrep. Затем цепочка awk, или sed, или cut, чтобы получить именно то, что вы хотите.
Это также причина того, что "ненужное использование кошки" часто является нелепой критикой. Если вы скачали файл, но обнаружили, что он неожиданно длинный, используйте историю оболочки, нажмите стрелку вверх и сделайте что-нибудь еще с ним. Быстрая починка? Просто добавь cat foo | more
, Как долго это? Стрелка вверх и | wc
, Сколько строк с "pangloss"? добавлять | egrep pangloss | wc
, Хорошо, если вы можете начать команду, точно зная, куда пойдет ваше расследование, но если вы не можете, история и каналы - хороший способ добиться цели. Даже если это некрасиво, cat file | more | egrep something
работает отлично.
Не совсем, используя этот метод. Вы пытаетесь использовать программы, которые ограничивают данные, но по-разному.
Пытаться
watch -n 5 tail -n 40 /var/log/thingy
Это будет обновлять замкнутый дисплей каждые 5 секунд.
Это так близко, как я могу получить, но это не то, что вы хотите.
Проблема в том, что больше ожидает всех своих данных одновременно, где tail продолжает передавать данные. Если вы просто пытаетесь прочитать последние несколько строк снова и снова, то часы сработают. Если вы хотите просто вести журнал и прокручивать назад, используйте консольный буфер.
В X это будут полосы прокрутки, если вы используете настоящую консоль, то вам нужно использовать что-то вроде:
kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128
увеличить размер во время загрузки. Затем вы можете использовать Shift UP и Shift Down для прокрутки.
Это намного проще в X. Просто
tail -f /var/log/something.log
и прокручивать взад и вперед. Вы можете нажать Enter, чтобы создать визуальный разрыв того, где вы были.
В VTY вам нужно использовать сдвиг вверх и вниз, чтобы выполнить то же самое, и если вам нужно больше прокрутки назад, используйте fbcon=scrollback:128
аргумент при загрузке.