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 <bastos....@gmail.com> > > > 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 <cesar...@bol.com.br<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: > > shell-script-unsubscr...@yahoogrupos.com.br<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]