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

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

Re: Dúvida em relação a um fluxo de script que exige retorno do 'whois'


From: rapha.couto
Subject: Re: Dúvida em relação a um fluxo de script que exige retorno do 'whois'
Date: Wed, 12 Sep 2012 14:31:53 -0000
User-agent: eGroups-EW/0.82

Tenta usar:

ulimit -t segundos

Isso deve restringir o tempo de CPU dos comandos do shell atual.

--- Em address@hidden, Alexandre Mulatinho <alex@...> escreveu
>
> Bom dia,
> 
> Depois de quase uma hora arranjei uma 'solução alternativa':
> 
> *#!/bin/bash
> TIMEOUT=10
> while read ip;
> do
>     whois $ip &
>     pid=$!
>     (sleep $TIMEOUT; kill $pid) &
>     wait $pid
> done < /tmp/ip.txt*
> 
> Só que aí ele tentara dar kill mesmo nos processos que passaram com sucesso
> e não demoraram/pararam.
> 
> Daí pensei em fazer uma gambiarra para resolver isso, só que aí ele iria
> demora horas rodando, o que não me parece interessante justamente porque
> estamos implementando um timeout para agilizar a execução do script, então
> a 'gambi' ficou assim:
> *
> #!/bin/bash
> TIMEOUT=10
> while read ip;
> do
>         whois $ip &
>         pid=$!
>         sleep 2
>         if [ -f /proc/${pid}/status ]; then
>                 (sleep $TIMEOUT; kill $pid) &
>                 wait $pid
>         fi
> done < /tmp/ip.txt
> 
> *Se alguém tiver alguma solução melhor, desde já eu agradeço,
> Alexandre Mulatinho.
> 
> Em 12 de setembro de 2012 08:49, Alexandre Mulatinho
> <alex@...>escreveu:
> 
> > Fala turma,
> >
> > Bom dia! Tô com uma dúvida para melhorar a performance de um script e
> > gostaria da ajuda de vocês.
> >
> > Tenho a situação em que recebo uma lista de IPs (1000+) e começo a fazer
> > WHOIS para saber o ISP deles, é mais ou menos assim:
> > *
> > while read IP;
> > do
> >   whois $IP | grep informacoes uteis.. | sed ...
> > done < lista_de_IPs.txt
> > *
> > O script funcionava muito bem mas depois que ele foi migrado para uma
> > máquina nova ele passou a parar no whois, imagino eu que seja um problema
> > de rede, mas não gostaria de 'aperriar' a turma de redes com isso, queria
> > então fazer o seguinte:
> >
> > 1) rodar o whois
> > 2) verificar se esse whois ta demorando mais do que 30 segundos
> > 2.1) se sim, dar um kill no processo e continuar
> > 2.2) caso nao, continuar normal
> >
> > Pensei em algo assim:
> > *whois $IP &
> > ret=$!
> > trap "echo kill -15 $ret" 2 # Será que tem algum trap pra esperar X
> > minutos ?
> > wait $ret*
> >
> > Claro, isso funcionaria se eu fosse danto CTRL+C, só que o script roda sem
> > controle do usuário via cron então não é a solução, não sei se eu
> > conseguiria neste loop guardar o pid do processo em um arquiivo e fazer um
> > check nos arquivos que estao demorando mais de 30 segundos para sumirem e
> > dar kill, bom, acho que tbm não deve ser a melhor situação e por isso
> > gostaria de pedir a ajuda de vocês para descobrir uma solução mais decente.
> >
> > Desde já agradeço,
> >
> > --
> > Atenciosamente,
> > *Alexandre Mulatinho*
> >
> 
> 
> 
> -- 
> Atenciosamente,
> *Alexandre Mulatinho*
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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