[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Shell script "recursivo"
From: |
César A . K . Grossmann |
Subject: |
Re: Shell script "recursivo" |
Date: |
Tue, 09 Jun 2009 13:11:09 -0000 |
User-agent: |
eGroups-EW/0.82 |
--- Em address@hidden, Valtoir Jardim <valtoirjardim@...> escreveu
>
> Não sei se serve, mas uso algo parecido no script do link abaixo:
>
> http://br.groups.yahoo.com/group/shell-script/files/feet.sh
Vou dar uma olhada.
> O script tem uma função com o mesmo nome, que é chamada logo após sua
Bom, o que eu estou fazendo é um tipo de "autoclicker". Ou um "webhammer". A
idéia é fazer um "dump" ou um "bump" em um endereço de Web a cada 15 segundos.
Tenho quatro destes endereços, e o limite é que só posso fazer um "bump" no
endereço X passados 15 segundos do último "bump" no mesmo endereço X.
Atualmente eu faço algo assim:
repetir
bump X
bump Y
bump Z
sleep 10
até "sempre"
Coloquei 10 segundos por que fazer os 3 bumps leva mais ou menos este tempo.
Mas esta é só a casca do problema, cada bump pode levar alguns segundos, ou
então pode ficar "congelado" (às vezes a página não responde, ou demora muito
tempo para responder), de forma que o bump, mesmo, é algo como:
timeout 5s lynx --dump X
O timeout é um script que encontrei por aí que faz o que o nome diz, chama um
comando e aguarda um tempinho, se o comando não terminou neste tempinho, mata o
mesmo. Se o comando terminar antes, o timeout termina antes também.
Bom, em vez de fazer fazer deste jeito, pensei que cada endereço X, Y Z poderia
ter seu próprio "thread", algo assim:
bump_thread:
repetir
hora_fim = date "now+15s"
timeout 5s bump
agora = date "now"
enquanto agora < hora_fim
sleep 1
agora = date "now"
fim_enquanto
até "sempre"
O programa principal seria algo do tipo:
para endereco em X Y Z
faça
bump_thread $endereco &
fim_faça
Para acrescentar mais endereços para "bump", é só acrescentar no laço do "para"
no programa principal. E quando o eu fizesse Ctrl+C no programa principal, ele
deveria matar todas as threads que havia originado.
> Quanto ao lock, será que o ps não é mais efetivo?
Se eu entendi, algo do tipo "use o PS para encontrar um PID que tenha como
tarefa o mesmo script e, se encontrar e não for o PID da instância atual, cai
fora que já tem cópia rodando", certo?
Tem algum exemplo? Eu vou dar uma olhada no manual do Bash que o outro colega
apontou, se for daí, é só dizer, senão, eu fico feliz se apontares um link...
[]s