shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

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