[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Shell script "recursivo"
From: |
César A . K . Grossmann |
Subject: |
Shell script "recursivo" |
Date: |
Tue, 09 Jun 2009 01:32:04 -0000 |
User-agent: |
eGroups-EW/0.82 |
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
- Shell script "recursivo",
César A . K . Grossmann <=