shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lista o conteúdo dos últimos 10 min de um arquivo.


From: rafael cruz
Subject: Re: Lista o conteúdo dos últimos 10 min de um arquivo.
Date: Wed, 17 Jul 2013 11:46:23 -0000
User-agent: eGroups-EW/0.82

Bom dia, e antes de começar a falar Obrigado a todos pela ajuda :D.
Desculpe não responder ontem é que não vim trabalhar estava com uns problemas 
para resolver. Mais vamos ao assunto :), no dia que criei o tópico pedindo 
ajuda antes de ir embora deixei um script rodando com a seguinte estrutura.

data=`date "+%a %b %d %H:%M" --date="-10 min"`
grep -A 1000000000 "$data" arquivo.log  | grep -i "I/O Error" |wc -l

Pelo meu monitoramento que estou vendo até esta dando certo esse solução pois o 
formato do log é o seguinte: 
Wed Jul 17 08:24:07 2013 : Auth: Login OK:
Wed Jul 17 08:24:09 2013 : Auth: Login OK:
Wed Jul 17 08:24:12 2013 : Auth: Login OK:

e assim vai, no caso eu deixei a variável data pegando a hora atual - 10 min e 
faço a filtragem no log pegando 1000000000 linhas a frente do primeiro 
resultado que ele achar com a hora da variável date. Agora estou tentando achar 
um meio de garantir que ele pegue todas as linhas 
sem eu ter que especificar um valor como no caso o 1000000000. ou seja achou 
uma linha com o conteúdo da pesquisa exibir todas as linhas após.

João o cat na verdade acabei não usando no script que tinha deixado pronto, 
porém obrigado pela toque não sei pq mais eu tenho uma mania de ir olhar um 
arquivo sempre colocar a budega do cat antes e fazer a filtragem rsrs. 

--- Em address@hidden, João Olavo Baião de Vasconcelos <joaoolavo@...> escreveu
>
> 2013/7/16 Julio C. Neves <julio.neves@...>
> 
> > **
> > Fala João,
> >
> > vamos dizer que ele queira os logs do dia 16 Jul, a partir de 15:21
> >
> 
> Mas aí que tá... Ele quer os logs de uma data que está em uma variável pra
> frente.
> 
> hora_data="Jul 16 15:21:14"
> 
> O que eu perguntei foi como jogar isso para o formato 0716152114 com o
> comando date.
> 
> Seria mt mais rápido mesmo se desse para montar isso com o grep, mas teria
> que lidar com passagem de dia (10 minutos antes de Jul 16 00:03:00, por
> exemplo). Teria que montar uma ER dinamicamente pra jogá-la pro grep. Aí
> sim, acredito que ficaria mais rápido mesmo.
> 
> Abraços!!
> 
> grep -E "Jul 16 (1[5-9]|2[0-3]):[2-5][0-9]" ArqLog
> >
> > ER é bom demais... ;)
> >
> > Abraços na rapaziada aí de Vitória e tb na família.
> > Julio
> > *@juliobash
> > *
> >
> > Em 16 de julho de 2013 17:05, João Olavo Baião de Vasconcelos <
> > joaoolavo@...> escreveu:
> >
> >
> > > Rafael,
> > >
> > > Primeiramente, vc não precisa fazer um cat para depois fazer um grep.
> > Faça
> > > um grep direto no arquivo!
> > >
> > > "ERRADO":
> > > cat arquivo.log | grep "Error" |wc -l
> > >
> > > CORRETO:
> > > grep "Error" arquivo.log | wc -l
> > >
> > > Mas vc quer contar o número de linhas ou mostrar as últimas?
> > >
> > > Mande para cá um exemplo de log contido nesse arquivo.
> > >
> > > Imaginando que seja o seguinte:
> > >
> > > Jul 16 16:25:35 hostname user: blablabla
> > > Jul 16 16:25:48 hostname user: blablabla
> > > Jul 16 16:26:13 hostname user: blablabla
> > > Jul 16 16:27:17 hostname user: blablabla
> > > Jul 16 16:35:59 hostname user: blablabla
> > > Jul 16 16:43:02 hostname user: blablabla
> > >
> > > Vc teria que obter a data atual, menos 10 minutos:
> > > date -d "-10 minutes" +"%b %d %H:%M:%S"
> > >
> > > E agora teria que filtrar por todos os resultados que são maiores ou
> > iguais
> > > à data e hora acima.
> > >
> > > Poderia ser de um jeito mais pedante, comparando linha a linha se a data
> > é
> > > maior que 10 min (ignorando o fato de isso poder demorar e qd vc olhar a
> > > última linha pode já ter passado mais 1 min e estaria mostrando coisa que
> > > aconteceu há 11 min... E ignorando que estou ignorando o ano (como é o
> > caso
> > > do /var/log/messages)).
> > >
> > > Não consegui concluir o exemplo abaixo, mas é um começo. Não consegui pq
> > eu
> > > não sei como pegar uma string em um formato específico e imprimir com o
> > > comando date em outro formato. Alguém poderia me ajudar nisso??
> > >
> > > Exemplo considerando o meu exemplo de log, que NÃO FUNCIONA, é só uma
> > > ideia:
> > >
> > > MINUTOS_BASE=10
> > > DATA_HORA_BASE=$(date -d "-$MINUTOS_BASE minutes" +"%m%d%H%M%S")
> > > # Teria que transformar o conteúdo da variárvel DATA_HORA_BASE para um
> > > formato somente numérico, tipo 0716164302, para poder comparar
> > > numericamente. #comofas??
> > >
> > > while read LINHA
> > > do
> > > DATA_HORA=$(awk '{print $1 $2 $3}')
> > >
> > > # Teria que transformar o conteúdo da variárvel DATA_HORA para um formato
> > > somente numérico, tipo 0716164302, para poder comparar numericamente.
> > > #comofas??
> > >
> > > [ $DATA_HORA -ge $MINUTOS_BASE ] && echo $linha
> > > done <<< "$(cat arquivo.log)"
> > >
> > > Dê um "man date" e veja os formatos existentes para imprimir as datas e
> > > horas (%Y para ano, %m para o número do mês, etc), e adequar para o
> > formato
> > > do seu log.
> > >
> > > Bom, é só uma ideia para vc ir buscando soluções.
> > >
> > >
> > >
> > >
> > > 2013/7/15 rafael cruz <dicipolo_rafael@...>
> > >
> > > > **
> >
> > > >
> > > >
> > > > Boa noite!
> > > >
> > > > Pessoal estou com um problema na filtragem de um arquivo. estou fazendo
> > > > uma contagem de erro em um log, porém estou fazendo a leitura do log
> > por
> > > > inteiro e estou precisando pegar apenas a escrita dos últimos 10 min
> > por
> > > > exemplo.
> > > >
> > > > Estou utilizando filtragem básica cat arquivo.log | grep "Error" |wc
> > -l,
> > > > porém ele faz o check no arquivo inteiro.
> > > > Se alguém souber qual comando devo pesquisar melhor para resolver isso
> > > > agradeço pois deu umas "googladas" e não achei.
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > João Olavo Baião de Vasconcelos
> > > Analista de Sistemas - Infraestrutura
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > Esta lista não admite a abordagem de outras liguagens de programação,
> > como
> > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> > > prévio aviso.
> > > ----------------------------------------------------------
> > > Sair da lista: address@hidden
> > > ----------------------------------------------------------
> > > Esta lista é moderada de acordo com o previsto em
> > > http://www.listas-discussao.cjb.net
> > > ----------------------------------------------------------
> > > Servidor Newsgroup da lista: news.gmane.org
> > > Grupo: gmane.org.user-groups.programming.shell.brazil
> > >
> > > Links do Yahoo! Grupos
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >  
> >
> 
> 
> 
> -- 
> João Olavo Baião de Vasconcelos
> Analista de Sistemas - Infraestrutura
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]