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 21:17:49 -0000
User-agent: eGroups-EW/0.82

Oi Gustavo,

Na verdade, eu estava fazendo uns testes aqui e mantive desta forma, 
mas alterei a linha:

while [ $processos -ge 3 ]; do

por

if [ $processos -lt 3 ]; then

Como o processo é recursivo, basta eu rodar três instâncias logo de 
cara e assim que ele termina de ser executado, ele é chamado 
novamente. Se eu coloco o while, ele pode ficar preso se eu executar 
3 ou mais processos.

Valeu!

Leonardo

--- Em address@hidden, Gustavo Jantsch 
<jantsch@v...> escreveu
> 
> Ok, tava imaginando outra coisa mas acho que agora
> entendi melhor o que o amigo quis dizer.
> 
> Assim, num bloco só:
> 
> enquanto houver arquivos faca:
>  $entrada=arquivo_a_processar
>  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 &
> fim enquanto
> 
> ai fica legal... acho. ;)
> 
> Bom findi pra todo mundo,
> Gustavo
> 
> 
> On Fri, 22 Aug 2003 16:56:03 -0300
> "Ronaldo Russel - DHL IS - BR, SAO"
> <ronaldo.russel@d...> wrote:
> 
> > 
> > E se na forma anterior o processo fosse
> > recursivo, chamando a si mesmo, mas em
> > background e saindo em seguida? Tipo
> > 
> >  ... comandos               # Comandos dentro do shell.
> >  ... comandos               # Comandos dentro do shell.
> >  ./processo.sh &            # Processo chama a si
> >  mesmo em background. exit                          # Encerra
> >  o processo.
> > 
> > Não seria viável?
> > 
> > abraços a todos ...
> > 
> > -----Original Message-----
> > From: Leonardo Ayres
> > [mailto:leonardo.ayres@u...] Sent:
> > sexta-feira, 22 de agosto de 2003 16:53 To:
> > address@hidden Subject:
> > [shell-script] Re: Limitar numero de processos
> > em paralelo
> > 
> > 
> > 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
> > > >
> > > >
> > > >
> > 
> > 
> > 
> > -----------------------------------------------
> > ---------------------- 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
> > 
> > 
> > 
> > 
> > -----------------------------------------------
> > ---------------------- 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]