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

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

Re: [shell-script] Shell script "recursivo"


From: Valtoir Jardim
Subject: Re: [shell-script] Shell script "recursivo"
Date: Tue, 9 Jun 2009 09:05:54 -0300

Olá, César.

Não sei se serve, mas uso algo parecido no script do link abaixo:

http://br.groups.yahoo.com/group/shell-script/files/feet.sh

O script tem uma função com o mesmo nome, que é chamada logo após sua
declaração. Com o pressionamento de qualquer tecla envio um "pkill
nome_da_função" que mata o próprio script e quaisquer subprocessos que a
função tenha devido ao nome igual. A idéia era mais ou menos essa, chamar
várias vezes a função e ter mais de um par de pés caminhando pela tela ao
mesmo tempo, mas acabei deixando do jeito que está.

Quanto ao lock, será que o ps não é mais efetivo?

Valtoir

2009/6/9 Eri Ramos Bastos <address@hidden>

>
>
> Fala, César.
>
> Para matar os filhos você precisa do trap:
>
> http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#O_trap_n_o_atrapalha
> http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html
>
> Para saber se um script já está rodando eu costumo criar um arquivo em
> /var/run/ chamado nome-do-processo.pid, que contem o número do PID do
> processo, que você consegue na variável $$.
>
> Dependendo do tamanho que for ficar seu script usar funções é sempre
> uma boa idéia.
>
> []'s
> Eri Ramos Bastos
>
> 2009/6/8 César A. K. Grossmann <address@hidden<cesarakg%40bol.com.br>
> >:
>
> > ALL
> >
> > Estou às voltas com um problema interessante de programação shell script.
> O que eu quero é chamar um shell script, que por sua vez vai se chamar a si
> mesmo "n" vezes, cada uma com um parâmetro diferente na linha de comando,
> mas não vai esperar para terminar a execução, vai colocar em background e,
> quando eu der Ctrl-C no processo-pai, matar todos os filhos e então
> encerrar. Meio estranho, não? Podem pensar nisto como uma espécie de
> super-servidor, ou coisa do tipo. Um pseudo código para o que eu estou
> pensando seria:
> >
> > inicio
> >  se "$1" estiver vazio
> >  então
> >    para argumento em arg1 arg2 arg3
> >    faça
> >      $0 $argumento &
> >    fim-faça
> >    espera Ctrl-C
> >    mata filhotes
> >    fim
> >  senão
> >    repetir
> >      comando-qualquer $1
> >      espera 15 segundos
> >    fim-repetir
> >  fim-se
> > fim
> >
> > Cheguei a alguma coisa assim:
> >
> > #!/usr/bin/env bash
> >
> > if [ -z "$1" ]
> > then
> >  for arg in primeiro segundo terceiro
> >  do
> >    $0 $arg &
> >  done
> >  wait
> > else
> >  while true
> >  do
> >    echo $1
> >    sleep 15
> >  done
> >  return
> > fi
> >
> > A pergunta: esta é a melhor técnica de implementar este tipo de coisa?
> >
> > Outra pergunta, para impedir que o script seja executado mais de uma vez
> sem parâmetro nenhum, o ideal é colocar uma espécie de "lock file", qual a
> técnica usada em shell script para isto? E para garantir uma saída "limpa"?
> >
> > Abraços
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > 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<shell-script-unsubscribe%40yahoogrupos.com.br>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>  
>


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



reply via email to

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