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

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

Re: [shell-script] Re: Limitar numero de processos em paralelo


From: Gustavo Jantsch
Subject: Re: [shell-script] Re: Limitar numero de processos em paralelo
Date: Fri, 22 Aug 2003 17:26:39 -0300

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"
<address@hidden> 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:address@hidden] 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]