Exibindo um arquivo de log de "rolagem"

28

Via linha de comando, tenho um arquivo de log que gostaria de acompanhar.

O que eu quero é ter, basicamente, um tailque seja atualizado quando o log for atualizado, fazendo o texto rolar para cima à medida que novas linhas forem anexadas ao arquivo de log.

Existe algo lá fora que faz isso sem ter que escrever algum código?

WernerCD
fonte

Respostas:

35

tailtem a -fopção:

Na manpágina:

-f, --follow [= {name | descriptor}] gera dados anexados à medida que o arquivo cresce; -f, --follow e --follow = descritor são equivalentes

Portanto, se você digitar:

tail -f [path_and_name_of_logfile] - você verá a saída no terminal à medida que o próprio arquivo de log é anexado.

NB [path_and_name_of_logfile]é o parâmetro, portanto, para dar um exemplo:

tail -f /var/log/messages

Se você combinar com a -n [number_of_lines]opção, poderá iniciar a saída dos últimos [número_de_ linhas] no arquivo - por exemplo

tail -n 10 -f /var/log/Xorg.0.log

insira a descrição da imagem aqui


Alguns programas alteram periodicamente seu arquivo de log, movendo o antigo para um novo nome (por exemplo, log.0) e iniciando novamente.

O NB logrotate faz isso para registrar arquivos de outros programas que não fazem isso sozinhos.

tail -f continuará seguindo o arquivo antigo depois que ele for renomeado.

tail -F seguirá o arquivo pelo nome, assim mudará para seguir o novo arquivo.

liberdade de expressão
fonte
ambas as respostas estão prontas ... não sabia que Tail tinha essa opção. você recebe a verificação para obter informações adicionais.
WernerCD
Como um aparte, há também alguns scripts impressionantes por aí para colorir seu registro de rejeição. um exemplo que vem à mente é colorize.pl, e você consegue isso através do script colorize. por exemplo: tail -f / var / log / messages | Você pode
usar o seguinte comando
@lazyPower Nice também. Vou ter que mexer com isso, embora não ache que seja super útil na minha situação atual.
WernerCD
18

Embora tailseja certamente a maneira usual de fazer isso, deve-se notar que lesspossui o mesmo recurso e às vezes é mais útil.

Se você abriu um arquivo com less, pode pressionar Shift+ Fpara seguir o arquivo (ou seja, ele exibirá novas linhas, da mesma forma que tail -ffaz). Você pode sair deste modo com Ctrl+C

Você também pode começar lesscom a +Fopção, caso em que será iniciado nesse modo. De um modo geral, +pode ser usado para fornecer "comandos do teclado", os lessquais serão executados na inicialização.

Usar lesspara isso tem a vantagem de poder pesquisar facilmente o arquivo ou visualizar outras áreas, se necessário. Eu fiz isso frequentemente com arquivos de log, por exemplo.

Joachim Sauer
fonte
Nunca ouvi falar em "seguir" (mais, menos, cauda, ​​gato). É bom saber coisas.
WernerCD
1
Acordado. Eu prefiro muito menos. Ctrl-C interrompe a rolagem quando você encontrar algo interessante, em seguida b para rolar para trás ou para frente e / ou? para procurar para frente ou para trás. g o levará ao início do arquivo e G ao final. Tudo que você precisa.
Martin Dow
6

Faz

tail -f something.log

faça o que você quiser?

Florian Diesch
fonte
4

tail possui duas implementações para seguir e enviar dados que são anexados a um arquivo

  • siga o descritor de arquivo
  • siga um arquivo com um determinado nome

Com o parâmetro -f, --followe --follow=descriptor, tailsegue o descritor de arquivo. Esse método permite que o arquivo seja seguido por uma renomeação, mas o rastreamento é interrompido quando o arquivo é girado (um novo arquivo é criado com um descritor de arquivo diferente).

Ao seguir os arquivos rotacionados, use --follow=nameou -Fparâmetro igual a --follow=name --retry. Dessa forma tail, reabrirá periodicamente o arquivo para superar a possível rotação.

Jawa
fonte
1

Eu acho que o ccze é a ferramenta certa para você.

Faz a mesma coisa de colorir. Você pode assistir a rolagem do log para baixo, mas é mais fácil ler, porque as linhas são impressas com cores (erros em vermelho e assim por diante). Você pode experimentá-lo rapidamente com algo assim:

tail -f /var/log/syslog | ccze
Gelma
fonte