Я пытаюсь завершить файл с разбиением на страницы:
tail -f foo.txt | more
Это работает нормально, пока файл не получит, скажем, 200 строк, когда это происходит, характер команды tail
должен идти до конца файл, в этот момент я теряю след за журналом.
Есть ли способ избежать этого?
Мое решение таково:
less some-file.log
Затем в less
я нажал Shift kbd> + F kbd>. Это заставляет less
обновляться с файлом. Чтобы прокрутить назад, просто нажмите Ctrl kbd> + C kbd>.
Не совсем, используя этот метод. Вы пытаетесь использовать программы, которые ограничивают данные, но по-разному.
Попробуйте
watch -n 5 tail -n 40 /var/log/thingy
. Он будет обновлять замкнутый дисплей каждые 5 секунд.
Это так близко, как я могу получить, но это не то, что вы хотите.
Проблема в том, что все больше ожидают всех своих данных одновременно, где хвост продолжает транслироваться. Если вы просто пытаетесь прочитать последние несколько строк снова и снова, то часы сработают. Если вы хотите просто вести журнал и прокручивать назад, используйте консольный буфер.
В X это будут полосы прокрутки, если вы используете настоящую консоль, то вам нужно использовать что-то вроде:
kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128
, чтобы увеличить размер во время загрузки. Затем вы можете использовать Shift UP и Shift Down для прокрутки.
Это намного проще в X. Просто
tail -f /var/log/something.log
и прокручивайте назад и вперед. Вы можете нажать Enter, чтобы создать визуальный разрыв того, где вы были.
В VTY вам нужно использовать shift вверх и shift для достижения той же цели, а если вам нужно больше прокрутки назад, используйте аргумент fbcon=scrollback:128
при загрузке.
Используйте вместо этого tail -f log.txt | less
. На моем быстром тестировании, он обновляется, чтобы перейти к новой информации, и вы можете перейти вверх или вниз. То есть, меньше обновлений в качестве выходного буфера, статически не ссылающихся на исходный контент.
Или, небольшое изменение с меньшим количеством движущихся частей (без трубы) - решение, которое Дельфин упомянул в комментарии - less +F log.txt
- хороший способ. Вот что говорит справочная страница для F
:
blockquote>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.)
Другими словами, это идеально для этого случая.
1113 У него есть одна проблема, которая мешает ему быть моим любимым. Дополнение типа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
работает нормально.