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

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

Re: Limitar numero de processos em paralelo


From: Leonardo Ayres
Subject: Re: Limitar numero de processos em paralelo
Date: Fri, 22 Aug 2003 19:53:17 -0000
User-agent: eGroups-EW/0.82

Oi Gustavo,

Esta solução resolve um problema da solução apontada anteriormente. A 
solução dada pelo César até apontou um caminho que eu não estava 
conseguindo ver de iniciar novamente o processo ao final do mesmo, 
mas acontecia de o processo ir se propagando indefinidamente. 
Desta forma agora, o processo se mantém estável em número de cópias 
sendo executadas. 

Eu ainda teria que passar um nome de arquivo diferente para cada 
processo, mas isto, basta eu passar o diretório como parâmetro e 
varrer o diretório por arquivos não processados.

Leonardo

--- Em address@hidden, Gustavo Jantsch 
<jantsch@v...> escreveu
> 
> Olha só, esse problema é bem legal.
> Desenvolvi o script abaixo que, de forma simples,
> resolve o problema:
> 
> #!/bin/bash
> entrada="$1"
> processos=$(ps ax -o command | \
>       grep "^/bin/bash ./processa.sh" | \
>       wc -l ) 
> echo "Processos rodando: $processos" 
> while [ $processos -ge 3 ]; do
>         sleep 2s
>         processos=$(ps ax -o command | \
>               grep "^/bin/bash ./processa.sh" | \
>               wc -l ) 
>      echo "Processos rodando: $processos" 
> done
> echo "Executando: $entrada"
> ./processa.sh $entrada &
> 
> ele tenta manter no máximo 3 cópias do shell
> "processa.sh" executando ao mesmo tempo. E
> funciona legal... o único porém fica quanto ao
> "sleep 2s" que deveria ser randômico e não fixo.
> Pois se eu iniciar 5 cópias do shell acima com
> intervalo de 1s entre cada chamada... o shell faz
> o que se pede. Mas se eu iniciar 5 cópias do shell
> acima, ele vai disparar os 5 "processa.sh" ao
> mesmo tempo por que o sistema tem um delay pra
> passar a informação para o ps | grep. Ou seja, as
> 5 cópias pegam um 'ps | grep' com a mesma
> informação.
> 
> Se pudesse gerar um delay aleatório, funcionaria
> legal. Algo tipo "sleep '2*umnumeroqualquer's".
> 
> []s,
> Gustavo.
> 
> On Fri, 22 Aug 2003 18:05:59 -0000
> César A. K. Grossmann <cesarakg@b...> wrote:
> 
> > --- Em address@hidden,
> > "Leonardo Ayres"<leonardo.ayres@u...> escreveu
> > > Achei a solução bem simples e elegante, mas
> > > não sei bem se serve no meu caso. Deixe eu
> > > detalhá-lo melhor.
> > > 
> > > Como o processo está um pouco lento, pensei em
> > > melhorar a performance colocando uns 3
> > > sql-loader carregando arquivos diferentes em
> > > paralelo. 
> > 
> > Bom, antes de tentar uma solução para este novo
> > desafio de script, eu preciso te fazer uma
> > pergunta: você sabe *por quê* o processo está
> > lento? Colocar três consultas em paralelo vai
> > realmente agilizar o teu trabalho?
> > 
> > É preciso ter certeza de ter entendido bem o
> > problema, por que senão você vai estar fazendo
> > que nem a moça da piada, que estava procurando
> > uma chave em baixo de um poste, por que era mais
> > iluminado do que onde ela tinha perdido a chave.
> > 
> > []s
> > --
> > César A. K. Grossmann
> > 
> > Um resumo da história de John Lions, um herói do
> > mundo Unix
> > http://www.LinuxByGrossmann.cjb.net/code_critic.html
> > 
> > 
> > 
> > -----------------------------------------------
> > ---------------------- 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:
> > address@hidden
> > -----------------------------------------------
> > ------------------ Esta lista é moderada de
> > acordo com o previsto em
> > http://www.listasdiscussao.cjb.net
> > -----------------------------------------------
> > ----------------------
> >  
> > 
> > Seu uso do Yahoo! Grupos é sujeito às regras
> > descritas em: http://br.yahoo.com/info/utos.html
> > 
> > 
> >


reply via email to

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