issues para inspecionar um arquivo de texto longo no unix

2

Se eu correr

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

Eu recebo um arquivo muito longo e não consigo ver as últimas linhas. Se eu correr:

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

Eu não entendo nada? O que estou fazendo errado?

Além disso, como posso mudar para uma linha específica usando o editor de pico?

obrigado

    
por aneuryzm 23.03.2011 / 11:29

3 respostas

3

É melhor usar algum programa de pager como less . Ele tenta não carregar o arquivo inteiro na memória, então funciona bem com arquivos grandes. Em menos, você pode ir para uma linha específica digitando :123 , em que 123 é o número da linha que você precisa.

Quanto à cauda - você está conseguindo algo sem o awk? Ou com sudo tail -n 10 -f <log> ?

    
por 23.03.2011 / 11:40
2

O sinalizador -f na cauda significa "Mantenha o processo final em execução e, se o arquivo for alterado, coloque-o em STDOUT ". Basicamente, é uma maneira legal de assistir ativamente a um arquivo de log.

Acredito que o canal esperará o primeiro programa terminar de gravar em STDOUT antes de lançar a saída em awk . Por causa do -f flag, o tail nunca sai (até que você o informe), então nada é canalizado para awk . Portanto, nada é impresso.

Experimente o segundo comando sem o -f . Se você está procurando pela funcionalidade -f , mas também com a desconexão da saída com awk, não tenho certeza qual é a resposta, menos escrever um script personalizado para fazer isso ...

    
por 23.03.2011 / 11:37
0

tail -f nunca sai enquanto o arquivo ainda existir (e eu acho que depois disso também). Nada é passado através do tubo até que o primeiro processo tenha morrido.

Se você deseja a funcionalidade de tail -f (ou seja, monitorar o arquivo) enquanto ainda o canaliza através do awk, tente watch "tail /var/log/lighttpd/website/error.log | awk '{print \ \"--\" \}'"

    
por 23.03.2011 / 11:43

Tags