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?


fonte

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

taliezin
fonte
12

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

tail -n0 -f some.log
fredtantini
fonte
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.
Ragu Rathish
fonte
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!

Number16BusShelter
fonte