Varios scripts ao mesmo tempo! [RESOLVIDO]

25. oppis

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 26/08/2011 - 18:23h

falha minha rsrsrs eu dei um ctrl+v, foi mais rápido doq eu quando vi ja tinha postado.... rsrsr
pronto... já editei


  


26. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 26/08/2011 - 18:29h

são variáveis, dar para automatizar criando variáveis e mudando o seu conteúdo quando necessário é isso que os colegas querem dizer.

Como diria um amigo meu, "programador tem que ter espirito de preguiçoso, sempre tem que procurar um jeito de automatizar as coisas"

Abraços


27. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

edgar
edgaroliveirace

(usa Ubuntu)

Enviado em 26/08/2011 - 18:34h

ola hudyfx é mesmo, rsrsr obg pela dica, mais acho q sua soluçao estar fazendo o seguinte ele estar executando 20 quando termina os 20 ele vai executar mais 20, queria saber se quando for terminando os scripts ele fosse ja rodando outro dos outros 20., que ficasse sempre 20 executando, quando termina 1 dos 20 em execuçao "ficaria 19" entao ele pegaria outro e executasse sem esperar todos os 20 termina para começa os outros 20. entederam?


28. pois é...

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 26/08/2011 - 18:52h

bom... na verdade eu só mexi no exemplo que vc deu... eu queria fazer um parada mais loca rsrsr
do jeito que vc ta penssando por isso que eu usei
ddd="88 85 89 48 56 45 68 45 65 12 32 37 11 22 14 77 75 74 73 74 87 98 56 45 32 14 78 97 47"
e um
for i in `cat $ddd`; do

só que nao tive tempo de concluir o raciocínio, ta punk a coisas aqui no trampo... :(

bom... to indo pra casa agora... talvez lá de pra fazer um paradinha legal... isso, se augue ja não a fizer enquanto isso...

belezz??!!


29. Varios scripts ao mesmo tempo!

edgar
edgaroliveirace

(usa Ubuntu)

Enviado em 26/08/2011 - 19:02h

for a in $(seq 1 60); do
./loja$a.sh
done
esse modelo ele executa todos ao mesmo tempo, ele teria q executar 20 scripts ao mesmo tempo, dos 60. quando fosse terminando 1 executasse outro. coloquei esse exemplo so para dar uma luz e explicar melhor e so esse script q serar executado.


30. Como Controlar vários Scripts rodando ao mesmo tempo ?

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 26/08/2011 - 20:05h

Continuo achando que a solução ideal está no processo em paralelo para fazer todos os controles.
[citando]

AprendiNoLinux
(usa Ubuntu) [13] Enviado em 23/08/2011 - 11:32h:


Encontrei este material e talvez possa ser uma outra forma de pensar em fazer o que precisa.

http://www.gnu.org/software/parallel/

http://www.youtube.com/watch?v=1ntxT-47VPA&feature=watch_response

As vezes pode ser usado várias máquinas para fazer o trabalho. Foi isto que entendi.
[/citando]

Enquanto não consigo dominar este esquema, deixa eu dar uns palpites rss :)

------------------------------------------------------------------------
1 - Ter 20 rotinas rodando ao mesmo tempo.
solução: Os nomes de pipes terão todos o mesmo prefixo, exemplo: ProcLojasXX.pipe (onde XX seria o número da loja)
2 - Criar 1(um) arquivo temporário chamado TmpServiceProcLojas.txt (Em cada linha os dados com os serviços, ou até o comando se desejar)
3 - Criar 1(um) arquivo temporário chamado TmpServicePronto.txt (Cada loja finalizada, grava uma nova linha) (só pra controle teu)
4 - Como saber se deu pau onde continuar ? O TmpServiceProcLojas.txt junto com o TmpServicePronto.txt irão ajudar.
5 - Como controlar para ter sempre 20 lojas sendo processadas ? (Verifiando a quantidade de ProcLojasXX.pipe ) se 19, coloca +1 e assim vai.
6 - Sempre que uma loja finalizar, deverá remover o seu próprio ProcLojasXX.pipe e gravar o TmpServicePronto.txt
7 - Se centralizar as rotinas via verificação de pipes, poderá disparar com várias máquinas se desejar e sempre terá 20 sendo executado. No meu caso falo de 1.000 processos sendo distribuídos para 53 equipamentos. Não posso ter mais do que 1.000 ao mesmo tempo. Hoje fazemos em cron e está um lixo.


Estou estudando várias alternativas para solucionar o meu problema que em parte é muito similar ao seu. Você está dando uma outra roupagem, mas no fritar de ovos, estamos falando do mesmo problema. Limitações de equipamento, comunicação, transmissão de dados e controle se os dados foram efetivamente transferidos.
Aproveitar todo momento ocioso dos equipamentos para trabalhar pra nós.
Se o seu problema é este, a solução passa por dividir todas etapas de trabalho. Uma solução simplória pode resolver o problema como está sendo feita.
Embora seu problema está próximo de ser resolvido, se desejar, tente pensar em uma nova solução para reformular o que está sendo tentado.

- Imagine que entrem mais 20 lojas.
- Imagine que novas rotinas possam ser feitas durante o dia.

Se tentar uma solução mais generalista, poderá fazer transmissões de serviços a qualquer momento.

Desculpe por me alongar tanto, mas este assunto me interessa muito e também estou tentando um caminho mais produtivo pra mim e talvez para este problema em especial.

Meus 3 cents rsrs.





31. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 26/08/2011 - 20:41h

@edgaroliveirace Tente dividir os passos novamente sem repetir nenhuma. Pense nesta hora em uma única loja. Neste momento, a quantidade de lojas não importa para solucionar o problema. Deixa eu explicar melhor.

Tarefas individuais
===================

1 - Pasta onde está o arquivo que será transferido. (Claro que nesta pasta poderão estar todos arquivos)
2 - Qual arquivo deve ser enviado ? Nome padronizado de preferência.(Deve ter um prefixo padrão e variando no final do nome ou até na extensão)
3 - Qual o comando que será usado para transferir este arquivo.
4 - Qual o comando de retorno para saber se a transferência foi bem feita.
5 - Pasta que irá gravar a conclusão deste envio.
5 - Nome do arquivo que informa a conclusão deste envio.

Se conseguir resolver estes passos para uma loja, vamos agora ao grupo.

Serviço
=======
1 - Arquivo de config. ( Dentro do arquivo de config podemos colocar algumas constantes.)
1.1 - Total de lojas para transferência.
1.2 - Quantas lojas podem enviar ao mesmo tempo.
1.3 - Diretório onde ficarão os pipes para controle de atividades.
1.4 - Prefixo do arquivo pipe das atividades.
1.4 - Diretório onde pegaremos os arquivos a serem transferidos.
1.5 - Prefixo dos arquivos que iremos transferir.
1.6 - Diretório onde irá gravar o arquivo de conclusão.
1.7 - Prefixo do arquivo de conclusão.
1.8 - Diretório Onde ficará o arquivo de controle de serviço.
1.9 - Nome do arquivo de controle do serviço.

Rotinas / funções
=================

function _proc_lojas() {
: # Processa serviço de cada loja.
}

function _next_loja() {
: # Pega a próxima loja a ser processada no envio.
}

function _inicia_loja() {
: # Quando já se sabe qual loja a processar, faz a inicialização.
}

function _fim_loja() {
: #Quando a loja terminar de processar, avisa finalização. Desativa pipe.
}

function _conclusao() {
: # Atualiza ou limpa inicializadores avisando que o serviço terminou.
}

function _start() {
: # Permite criar os inicializadores de serviço se não tem nada em andamento.
}

function main() {
: # Rotina principal que tem o while infinito.
}

===========================================
Dividindo cada tarefa em pedacinhos poderemos controlar todas etapas.
Mesmo que o serviço não consiga terminar, se chamar o programa novamente, deverá continuar naturalmente de onde parou se os controles de etapas forem respeitados.

Dar palite é fácil né ? rsrs. Quero ver é resolver a pendenga. Mesmo que esta não seja a solução ideal, vale como análise de processos.
Estou do meu lado tentando algo muito similar para fazer minhas transmissões de dados.
No meu caso é bem maior que o teu, mas acho que o problema é o mesmo. Onde você tem lojas, eu tenho categorias de dados/trabalhos. Onde você faz uma vez por dia, eu tenho que fazer quase 1.000 por dia.




32. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

edgar
edgaroliveirace

(usa Ubuntu)

Enviado em 27/08/2011 - 08:35h

ola AprendiNoLinux, ja fiz isso q vc estar falando e fiz uns 1000 teste com scripts e cheguei a um que estar so esperando alguma respostas dos nossos amigos do VOL.testei um script em 20 em 20, mais o problema é q se cair a conexao ele vai demorar muito para entender q o link caiu e ai vai demorar a fazer os outros vintes. se ele fizesse sempre 20 ao mesmo tempo se travasse 1 nao teria muito importancia pq os outros iriam termina e continuaria o restante ele nao iria espera termina esse para passar para os proximos 20.nao estou explicando detalhado pq seria muito grande mais so para ter uma base.


33. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/08/2011 - 08:49h

Amigo, eu peguei o seu problema pra mim e tentei bolar algo aqui...

Eita treko complicado! Bolei mil maneiras e fiz vários testes, mas todos funcionavam parcialmente, não resolvia o problema, pois você quer gerenciar cada processo separadamente (para saber se está ou não em execução) e isso é muito complicado de se fazer quando se coloca esse loop de "sempre 20", não consegui bolar nada que pudesse controlar isso, o máximo que consegui foi controlar o grupo de 20 processos, mas individualmente eu já desisti rs.

Mas como o AprendiNoLinux já propôs, é possível sim fazer isso se transformarmos esses scripts em serviços e em vez de gerenciar os processos, gerenciar estes serviços. Veja:

http://www.vivaolinux.com.br/topico/Shell-Script/Como-criar-servicos-em-Shell-Script

http://www.vivaolinux.com.br/artigo/chkconfig-Adicionando-o-seu-shell-script/

Não tentei criar nada do tipo pois ai já entra em outra área que não poderei dar muito suporte, então deixo para outros.

@AprendiNoLinux Sobre sua resposta, cara, se seguirmos o seu post teremos um sistema de gerenciamento completo e perfeito, sem exagero... o forda é "preencher" isso ai kkk

Bom, eu tentei, que venham os veteranos, porque agora eu quero saber a solução para isso também.


34. acho que agora vai

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 27/08/2011 - 14:20h

o desculpa a demora... então... to quase entendendo tudo rsrsrs
acompanhe meu raciocínio.... (estou partindo do principio que vc tenha 60 scripts dentro de um diretório um pra cada loja)
edite cada script dessa forma...
====loja1.sh====
#!/bin/bash
echo l1 >> verifica.txt
.
"aqui o conteudo do seu script"
.
grep -v "l1" verifica.txt > saida.tmp
mv saida.tmp verifica.txt
================
====loja2.sh====
#!/bin/bash
echo l2 >> verifica.txt
.
"aqui o conteudo do seu script"
.
grep -v "l2" verifica.txt > saida.tmp
mv saida.tmp verifica.txt
================
e por ai vai até o 60

e por fim crie um script que vai gerenciar a bagaça toda rsrsr...
#!/bin/bash
for i in `seq 1 60`; do
while true; do
if [ `cat verifica.txt | wc -l ` -le 20 ]; then
./loja$i.sh &
break
fi
done
done

a ideia é a seguinte... cada script vai escrever alguma coisa (por exemplo l1) no arquivo "verifica.txt" depois ele apaga no fim de sua execução.

enquanto os scripts nao apagarem oq escreveram no arquivo verifica.txt e se o arquivo tiver 20 linhas o procimo nao sera iniciado e por ai vai... ve se da certo... num deu pra testar...
falowww


35. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 27/08/2011 - 16:54h

ok @edgaroliveirace entendi perfeitamente a sua posição. :) Só não vou desistir porque estou no meio de uma solução similar a sua e para minha permanência no cafofo do desenvolvimento rsrs eu tenho que resolver ou minha cabeça vai rolar.

valeu @mrk3004 por estar antenado no caso e ter enxergado onde está o problema real. Sou chegado a uma gambiarra rsrs, mas neste caso não posso deixar passar. Os processos ficarão pendurados e não saberemos quem está faltando fazer e nem como continuar onde parou. Não sei se 10 é bom ao mesmo tempo. Se 20 é a melhor opção no meu caso ou se será 50. Saber o que está acontecendo com todos é o único caminho coerente.

Eu acho que entendi a sua lógica @hudyfx , mas ela tem o mesmo problema dos processos simultâneos. Sua solução se fosse ter dentro do arquivo a quantidade de lojas operando no momento já estaria se aproximando da minha sugestão.

Não acho que ele tem que ter 60, 20 ou 10 Scripts. Na minha visão, precisamos de 3 Scripts.
1 - daemonfiscaliza - Gerenciando os serviços que estão rodando.
1 - MeuServiço - Executando as lojas gerando pipes exclusivos de processamento e cada um independente. Podem ser 1, 10, 20, 50 ao mesmo tempo e regulado via config/parametro.
1 - MeuServicoDaemon - Servidor de serviço que vai responder para todas as chamadas e solicitações feitas pelo MeuServiço e prover o andamento.

Claro que existem várias maneiras de fazer NESCAU oops NESTON,oops, software. Esta é uma delas. Todas são válidas. Não existe o certo ou errado em software.
Eu vou tentar o caminho da preguiça. Trabalho pra karai agora e no futuro cada nova rotina que os malucos da empresa criarem eu vou adicionar serviços e eles pensarão que estou trabalhando que nem um animal rrssrs.

Eu já tenho a solução pronta na gambiarra feita em crons. Disparo 10 a cada 5 minutos e tá funcionando. O Servidor até treme porque são cerca de 200 crons.
Não aceito a forma que está hoje. Cada nova rotina eu tenho que ir lá e colocar mais alguns crons. Tá tudo errado na minha visão.
Também não adianta eu fazer a rotina como está sendo proposta pelo @edgaroliveirace porque tenho uma realidade e necessidade diferente da dele. Fazemos a mesma coisa. A diferença é que ele tem 60 lojas e eu tenho 1.000 (não lojas, mas rotinas a serem executadas). Tô falando 1.000 pra ficar redondo o número rsrs. Tem dia que é bem mais do que isto.

Resumindo. Não vou me entregar e continuarei esta análise em outros posts para não ficar atrapalhando :)





36. Re: Varios scripts ao mesmo tempo! [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 27/08/2011 - 17:25h

@AprendiNoLinux vc é bem perseverante gostei do seu estilo...

bom referente a esse problema... por equato estou só dando ideias... tomara que uma hora alguem resolva essa pipoca rsrsrs
gosto de problemas assim... rsrsrs
resolver problemas aqui é meio como uma partida de truco, uma hora algém sobe na mesa, pede 6 e saca o zap:
Truco!!!
6!!!!!
rsrsrs

vo bola outra ideia só que num script só beleza?...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts