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

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

Re: [shell-script] Lista o conteúdo dos últimos 10 min de um arquivo.


From: Julio C. Neves
Subject: Re: [shell-script] Lista o conteúdo dos últimos 10 min de um arquivo.
Date: Wed, 17 Jul 2013 11:53:16 -0300

O cmd date do UNIX (ambiente de desenvolvimento deles) é muito mais
restrito que o GNU date e repare
aqui<http://br.groups.yahoo.com/group/shell-script/message/17336>que
ele originariamente foi desenvolvido para UNIX.

Para te falar a verdade, me habituei com o uso desses 4 utilitários que
desenvolvi, que nem conheço todas as facilidades do GNU date.

Abcs,
Julio
*@juliobash
*



Em 17 de julho de 2013 11:21, João Olavo Baião de Vasconcelos <
address@hidden> escreveu:

> **
>
>
> Julio, então isso parece que responde a minha pergunta: não tem como fazer
> isso com o date. =/
>
> Mas blz, fica a dica aí pro Rafael! ;)
>
> 2013/7/17 Julio C. Neves <address@hidden>
>
> > **
> >
> >
> > Vc está 100% certo. Para fazer isso o parâmetro passado teria de ser
> > totalmente desmontado para dentro de variáveis, para então criar uma
> regexp
> > dinâmica.
> >
> > Para fazer o que vc propôs, há muito tempo postei aqui mesmo na lista 4
> > programas e, se não me engano, alguns foram aproveitados nas funções zz
> do
> > Aurélio e do Thobias.
> >
> > Para trabalhar com datas fiz o dton.sh e o ntod.sh o primeiro converte
> data
> > em número de dias decorridos desde 01/01/1980 (primeiro bissexto após a
> > criação do UNIX) e o outro faz o oposto, ou seja converte um número em
> uma
> > data.
> >
> > Usando o mesmo princípio, para trabalhar com horas fiz o hton.sh e o
> > ntoh.sh. Um transforma horas em segundos decorridos aṕos as 00:00:00 e o
> > outro faz o inverso.
> >
> > O legal desses bacalhos é que permitem calcular diferenças entre datas e
> > horários e permite somar dias, datas e horários.
> >
> > Se vcs quiserem ver, basta procurá-los pelos nomes no histórico da lista.
> > Se alguém quiser colocar os novos fontes deles (que já foram atualizados
> > para bash 4.0) em algum site, me peça em pvt que passarei.
> >
> > Abcs,
> > Julio
> > *@juliobash
> > *
> >
> > Em 17 de julho de 2013 08:16, João Olavo Baião de Vasconcelos <
> > address@hidden> escreveu:
> >
> > > 2013/7/16 Julio C. Neves <address@hidden>
> > >
> > > > **
> >
> > > > 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.
>
> > > 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 <
> > > > address@hidden> 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 <address@hidden>
> > > > >
> > > > > > **
> > > >
> > > > > >
> > > > > >
> > > > > > 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]
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > 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]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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