[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]
>