Como ver apenas os últimos 10 minutos de um log e grep para uma declaração

2

Estou procurando uma maneira de examinar apenas os últimos 10 minutos de um arquivo de log do WebLogic que tenha formatação de linha como esta.

####<Sep 21, 2018 1:56:20 PM EDT> <Notice> <Stdout>

Eu quero encontrar uma string específica e se ela falhar, aguarde 60 segundos e tente novamente. Isso seria para o RHEL 7 e estou aberto para usar sed, awk etc.

    
por Robert Foster 21.09.2018 / 20:19

2 respostas

2

Como você está usando o RHEL, 7 WebLogic provavelmente está usando o systemd agora. O que significa que você pode aproveitar as opções journalctl e --since .

Neste artigo link , parece que você usará wls_nodemanager ou wls_adminserver ou ambos. Para ver ambos usam:

journalctl -u wls_nodemanager -u wls_adminserver --since "10min ago"

    
por 23.09.2018 / 02:34
0

Se você relaxasse a exigência dos últimos 10 minutos e usasse o GNU coreutils e o grep, isso seria muito fácil:

tail -f -s 60 -n +0 file.txt | grep -m 1 pattern

Ative todo o arquivo iniciando na linha zero ( -n +0 ), faça polling a cada -s segundos e o grep parará após -m corresponder.

Para uma pesquisa interativa única, não incomodaria a análise de datas e, a princípio, alteraria manualmente a linha de início com o tail -n . A análise de data poderia ser escrevendo um script em sua linguagem de script favorita com um módulo decente para isso (Python, Perl).

Por fim, se você quiser um mecanismo de pesquisa para seus logs, procure implment sistemas de gerenciamento de eventos como Graylog, ELK, Splunk, Log Insight, LogRitmo etc.

    
por 22.09.2018 / 14:22