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

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

Re: [shell-script] Re: Estrutura de script para criar fila de espera


From: Robson Alexandre
Subject: Re: [shell-script] Re: Estrutura de script para criar fila de espera
Date: Mon, 21 Sep 2015 21:04:26 +0000

Prezados,

gostaria de agradecer todas sugestões e opniões sobre o assunto e digo que sempre aprendo algo novo com todos aqui e vamos às considerações.

Rodrigo,
sua solução utilizando o wait (sugerido pelo Fernando primeiramente) é exatamente o que eu cogitei no início do problema, mas eu não conhecia o funcionamento dele.
Apenas duas correções no script:
1. A lógica para verificar se há $pidProx verificando com [ -n "$pidProx" ] ao invés de -z
2. Não deve remover o pid da lista após esta verificação
28,29c28,29
<         [ -z "$pidProx" ] && {
<             sed -i '1d' "$dir/$0.pids"
---
>         [ -n "$pidProx" ] && {
> #            sed -i '1d' "$dir/$0.pids"

Já o named pipe me soou estranho pelo pouco conhecimento sobre, quando o atfreitas mencionou no começo do tópico para a solução de enfileiramento e estou tentando entender ainda a sua essência com o enfileiramento.
No segundo exemplo do mestre Julio, diz para iniciar o processo com um cat tubo e terminar com echo xx > tubo. Mas isso tudo deve acontecer com um processo semelhante ao sugerido pelo atfreitas que ficará ouvindo em background p.e.?
Fiz alguns testes redirecionando a saida do meu processo (execRotina) para o FIFO, conforme sugerido, iniciei o processo ouvinte em background e em outros terminais, mas nada roda sem alguém começar a ouvir o FIFO. Seria possível uma explicação mais abrangente sobre esse tipo de comunicação?

Itamar,
vc perguntou sobre o ambiente em que isso poderia ocorrer, e eu digo que a princípio, busco uma solução, ou soluções mais genéricas possíveis. O estudo de caso no momento é de uma rotina de cálculos estatíticos que pode ter sua execução em minutos, como pode levar alguns dias dependendo do volume de registros de entrada. E são rotinas que produzirão múltiplos resultados, um para cada acionamento do processamento. Assim surgiu  a necessidade do enfileiramento dos processos, pois o usuário poderá acionar a rotina de acordo com a demanda e vai aguardar pelo resultado dos cálculos sem preocupar-se com o meio do processamento ou se terá de apertar o botão a cada 108 minutos.

Usar o trap para capturar o SIGCHLD(17) será o próximo desafio para solução. Vou tentar esboçar algum código neste sentido também.



Atenciosamente
Robson Alexandre

Em seg, 21 de set de 2015 às 10:15, address@hidden [shell-script] <address@hidden> escreveu:
 

Obrigado Mestre Julio!


A referência em especial ao seu livro, foi por ter sido um divisor de águas para mim.
Primeiro devido ao capítulo sobre AWK, que eu particularmente adoro e, por ter referências a outros sites e projetos, em destaque ao thobias.org e aurelio.net, e nesse último por conhecer os FunçõesZZ, ao qual hoje posso orgulhosamente dizer que colaboro.

Quanto os problema principal, talvez o autor original dessa discussão possa dar mais detalhes sobre o ambiente em que isso pode acontecer, mas eu vislumbro a necessidade de enfileirar processos de terminais diferentes, com instâncias não correlatas.

E o trap ( "Para evitar trapalhadas use o trap" ) nos testes que fiz estaria preso as subshell e processos filhos, e o que eu imaginei que poderia vir requisições de usuários diferentes em instâncias e terminais independentes.
A sua citação anterior do trap eu já tinha ido verificar, todavia constatei que cairia nessa limitação, se isso acontecer.

O coproc, já tinha visto no "Tira Gosto" do seu "Papo de Botequim", todavia onde trabalho o bash é da versão 3.2.25 ainda, então não pude testar e nem experimentar toda sua capacidade em produção.
 

Obs.: Aliás comprei esse primeiro livro em 2007, e é uma das minhas relíquias que não empresto nem sob ameaça.

[]'s
Itamar


reply via email to

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