Exibir apenas as novas entradas em um arquivo de log crescente


20
tail -f x.log

Eu uso esse comando para ver um arquivo de log crescente no prompt de comando.

Estou interessado apenas em ver as linhas de log que são gravadas no arquivo após a execução tail -fe não estou interessado nos logs que foram gravados no arquivo antes de executar tail -f. Mas o tail -fcomando no início, pega as últimas 10 linhas e as exibe.

Isso me confunde, às vezes, se esses logs são gerados recentemente (ou) são logs antigos?

Então, como posso personalizar o tail -f para gerar apenas as novas entradas?

logs  tail 

Respostas:


31

Podes tentar:

tail -n0 -f x.log

Na página do manual :

-n, --lines = K produz
as últimas K linhas, em vez das últimas 10; ou use -n + K para produzir linhas começando com o Kth


12

Você pode usar a -n0opção para mostrar 0 linhas. tão

tail -n0 -f some.log

2

Você também pode usar lesscomandos como

  1. less file_name.log (o arquivo de log será aberto e mostrará a primeira página do arquivo de log)
  2. pressione shift+ f(para agir da mesma forma que tail -f)
  3. Caso você precise procurar qualquer palavra-chave no arquivo de log. pressione ctrl+ cpara sair do modo de cauda e procure a palavra-chave como /palavra- ?chave e palavra - chave.

Isso não exibe apenas as novas entradas em um arquivo de log crescente.
Spooky

0

Eu criei essa abordagem quando tive que monitorar as entradas no contêiner do docker:

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

Espero que isto ajude!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.