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

[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



reply via email to

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