[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Rodar script em modo exclusivo
From: |
Andreyev Dias de Melo |
Subject: |
Re: [shell-script] Rodar script em modo exclusivo |
Date: |
Sat, 21 Oct 2006 12:52:45 -0300 |
On 10/20/06, André Luiz Alves da Silva Prates <address@hidden> wrote:
Antes de starta-lo, você deve verificar se o seu processo já está executando.
FOUND=`ps -ef | grep 'meu_processo.sh' | grep -v egrep | grep -v $$ | wc -l`
Testar se seu script está rodando antes de inicia-lo é realmente
importante, mas um "grep" na saída do "ps" pode levar à erros. Eu
recomendaria o uso de arquivos de LOCK(trava), mais ou menos assim:
[ -f $LOCK_FILE ] || exit 1
touch $LOCK_FILE
# seu script aqui
rm -fr $LOCK_FILE || exit 1
exit 0
Quando seu script for executado com sucesso, o "$?" após ele será "0",
se ele ainda estiver sendo executado ou não conseguir apagar o
"$LOCK_FILE" o "$?" será "1".
Para maior segurança ainda, você pode jogar trocar:
touch $LOCK_FILE
Por:
echo $$ > $LOCK_FILE
Para guardar o PID processo do atual(seu script) no $LOCK_FILE, mas
antes você deve testar se ele já não está rodando:
[ -d /proc/$(cat $LOCK_FILE) ] || exit 1
O que testa se este processo ainda está rodando.
Talvez estes trechos rodem apenas sobre Linux e no BASH.
[]s
--
Andreyev