Если я сбегу
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}'"