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>: > 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 > --------------------------------------------------------------------- > 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 > > >