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: Eri Ramos Bastos
Subject: Re: [shell-script] Shell script "recursivo"
Date: Tue, 9 Jun 2009 06:51:32 -0300

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


reply via email to

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