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