*while : do nr=$(wc -l Arquivo) sleep 300 tail -$(($(wc -l Arquivo)-nr)) Arquivo done*
Não testei mas é capaz de precisar fazer um cut pois, se não me engano, o wc gera tb um literal. -- Abração, Julio Cursos de Shell e Zenity nos finais de semana: *- Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000 (Turma prevista para 09/05); - No RJ darei um treinamento em julho (p/ detalhes ligue (21) 2561-0867); - Turmas fechadas em outras cidades ligue (21) 8112-9988 * 2009/5/5 Ricardo Vendramini <li...@amplus.com.br> > > > > Pessoal, > > Acabei tentando da seguinte forma: > > #!/bin/bash > > LOG="/var/log/maillog" > > CNT_FILE="maillog_cnt" > > if [ -f $CNT_FILE ]; then > PTR=`cat $CNT_FILE` > else > PTR=0 > fi > > TOT=`wc -l $LOG|cut -d" " -f1` > > if [ $TOT -lt $PTR ]; then > PTR=0 > fi > echo "$TOT" > $CNT_FILE > > TMP=`tail -n +$PTR $LOG` > > O script pega o total de linhas do log (wc -l) e armazena num arquivo > temporario "maillog_cnt". A cada 5 minutos (pelo crond) o script pega da > linha que esta no maillog_cnt até o fim com o tail -n +xxx e atualiza o > contador em mailloc_cnt. > > Se alguem tiver alguma ideia para melhorar, agradeco. De qualquer forma > ai esta a solucao que encontrei, pode ser util para alguem. > > Vou tentar tambem a ideia abaixo do Eri e ver qual parece ser mais rapida.. > > Obrigado > > Ricardo > > > Eri Ramos Bastos wrote: > > Quase certeza que alguém deve saber um jeito muito mais fácil com sed > > ou awk, mas uma solução toda em bash: > > > > for time in {5..1}; do egrep "^$(date "+%b %e %H:%M" -d "-${time} > > minutes"):.*" /var/log/maillog; done > > > > []'s > > Eri Ramos Bastos > > > > 2009/5/4 Ricardo Vendramini <li...@amplus.com.br <lista%40amplus.com.br> > >: > >> Pessoal, > >> > >> Estou quebrando a cabeca e nao encontrei uma solucao para o seguinte > >> problema: > >> > >> Preciso somente das linhas de um arquivo de log correspondentes aos > >> ultimos 5 minutos. O arquivo de log é o /var/log/maillog > >> > >> O tail me da as ultimas "n" linhas, mas as vezes nao ha nada novo nos > >> ultimos 5 minutos, como pode haver muita coisa nesse tempo. Entao o nro > >> de linhas nao é fixo. > >> > >> O script que vai checar esse log esta no crond para rodar de 5 em 5 > >> minutos. > >> > >> Alguem tem alguma sugestao? > >> > >> > >> Obrigado > >> > >> Ricardo > >> > >> > >> > >> ------------------------------------ > >> > >> ---------------------------------------------------------- > >> 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: > >> shell-script-unsubscr...@yahoogrupos.com.br<shell-script-unsubscribe%40yahoogrupos.com.br> > >> ---------------------------------------------------------- > >> 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 > >> > >> > >> > > > > > > ------------------------------------ > > > > ---------------------------------------------------------- > > 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: > > shell-script-unsubscr...@yahoogrupos.com.br<shell-script-unsubscribe%40yahoogrupos.com.br> > > ---------------------------------------------------------- > > 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]