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

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

Re: [shell-script] Re: mult-thread bash


From: Jorge Pereira
Subject: Re: [shell-script] Re: mult-thread bash
Date: Thu, 24 May 2007 09:46:30 -0300

putz!!

Pra que fazer um "tanque de guerra" para matar um formiga?

[]s

On 5/23/07, Juliano <address@hidden> wrote:
>
>   Na verdade isso ainda é uma estudo de caso para ver consigo resolver em
> shell ao invés de escrever um binário para isso:
>
> Vamos supor um script de limpeza de spam:
>
> Eu gostaria de ao tempo que o script faz o total de msgs desses
> diretórios ele dividisse o a remoção em 4 processos por exemplo, e fosse
> realocando os ids de mensagem a medida que uma fila de remoção de cada
> um dos processos fosse diminuindo, nesse caso não adianta eu fazer job
> control ou fork desse shell, pois assim não tenho controle do que está
> sendo processado, e supondo que acabou o lista do primeiro ele não vai
> balancear entre os outros 3 em memória para continuar usando 4 processos
> de remoção.
>
> Cheguei a fazer uma contagem do total dividir isso em um array e fazer
> os sub processos mas isso cai na situação que eu disse acima:
>
> pid 10 shell ---> pid 11 10 fork 1 = 1000msgs
> pid 12 10 fork 2 = 1000msgs
> pid 13 10 fork 3 = 1000msgs
> pid 14 10 fork 4 = 1000msgs
>
> Caso o fork 1 acabe e tenhamos a situação:
>
> pid 10 shell ---> pid 11 10 fork 1 = 0
> pid 12 10 fork 2 = 700msgs
> pid 13 10 fork 3 = 900msgs
> pid 14 10 fork 4 = 500msgs
>
> Eu gostaria de redistribuir e balancear o que não esta em processamento
> no momento ganhando performance com isso e o único jeito que vejo de
> fazer isso é usando threads dai veio a pergunta.
>
> ## Original ##
> #!/bin/bash
>
> match="pr0n|echa"
>
> count=0
> for messages in /var/spool/postfix/maildrop/*
> /var/spool/postfix/defer/*/* /var/spool/postfix/deferred/*/*
> /var/spool/postfix/active/*/*
> do
> if [ -f $messages ] ; then
> message=$(echo $messages | awk -F'/' '{if ( $5 ~ /maildrop/ ) {
> gsub(/\*/,"",$6) ; print $6 } else { gsub(/\*/,"",$7) ; print $7}}')
> if egrep -i "$match" $messages > /dev/null ; then
> postsuper -c /etc/postfix -d $message
> spam="$message $spam"
> count=$(expr $count + 1)
> fi
> fi
> done
> echo "Foram removidas $count mensagens"
>
> Tiago Barcellos Peczenyj wrote:
> >
> >
> > Juliano, explique melhor
> >
> > O meu conhecimento vai até colocar um ou mais processos em backgrounds,
> cada
> > um com um PID associado. Vc pode enviar sinais para estes PIDs (kill /
> trap)
> > e pode aguardar o fim desses PIDs via comando wait.
> >
> > O que vc gostaria de fazer alem disso, Juliano?
> >
> > []´s Tiago
> >
> > On 5/23/07, Juliano <address@hidden <juliano%40falaserio.org>
> > <mailto:juliano% <juliano%25>40falaserio.org>> wrote:
> > >
> > > Caros,
> > >
> > > Alguém sabe se existe alguma implementação ou um modo não traumático
> de
> > > fazer mult-thread em bash, ou outro shell.
> > >
> > > []s
> > > ncode
> > >
> > >
> > >
> >
> > --
> > Tiago B Peczenyj
> > Linux User #405772
> >
> > # cd /pub
> > # more beer
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
>  
>



-- 
Regards,
+
---------------------------------------------------------------------------------+
Jorge Pereira, From: Olinda/Pe/Brazil
Home:  http://www.jorgepereira.com.br/
E-mail:  address@hidden, address@hidden
Mobile: +55 (81) 8833-2484
My Public Key: http://www.jorgepereira.com.br/public.pgp
+
---------------------------------------------------------------------------------+
    "Se você ama alguma coisa, liberte-a;
   Se ela não voltar a ti, cace-a e mate-a."
+----------------------------------------------------------------------------------+


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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