Назад | Перейти на главную страницу

проблемы с проверкой длинного текстового файла в unix

Если я сбегу

sudo pico /var/log/lighttpd/website/error.log

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

sudo tail -f /var/log/lighttpd/website/error.log | awk '{print $1 "--"  $2}'

Я ничего не понимаю? Что я делаю не так ?

Кроме того, как я могу перейти к определенной строке с помощью редактора pico?

Спасибо

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

По поводу tail - без awk что-нибудь получится? Или с sudo tail -n 10 -f <log>?

В -f флаг в хвосте означает: "Оставить хвостовой процесс запущенным, и если файл изменится, вставьте их в STDOUT". По сути, это изящный способ активного просмотра файла журнала.

Я считаю, что пайп будет ждать, пока первая программа закончит писать в STDOUT перед тем, как бросить вывод в awk. Из-за -f флаг, хвост никогда не закрывается (пока вы не скажете об этом), поэтому ничего не передается в awk. Поэтому ничего не печатается.

Попробуйте вторую команду без -f. Если ты ищешь -f функциональность, но также с искажением вывода с помощью awk, я не уверен, каков ответ, кроме написания специального скрипта для этого ...

tail -f никогда не завершается, пока файл все еще существует (и я думаю, что после этого тоже). По трубе ничего не проходит, пока не завершится первый процесс.

Если вам нужна функциональность tail -f (т. Е. Мониторинг файла), по-прежнему передавая его через awk, попробуйте watch "tail /var/log/lighttpd/website/error.log | awk '{print \$1 \"--\" \$2}'"