daniel.uramg
(usa Outra)
Enviado em 17/08/2012 - 09:28h
Olá pessoal,
tenho um script que é executado a cada hora que faz uma série de requisições em alguns servidores, eu adicionei uma função pra verificar se já não existe o processo anterior rodando, quando executo ele no prompt funciona corretamente, mas quando ele é executado pelo Cron sempre é finalizado pois ele "acha" que tem outro processo rodando.
# Garante a execucao de apenas uma instancia do script
if [ -s "$TMP_PID" ]; then
PID=`cat $TMP_PID`
if [ ! -z "`ps | grep $PID`" ]; then
echo "$PROG: Outra instancia em execução PID=$PID em `date`" >&2
logger "$PASTA/$PROG abortado pois outra instancia em execução PID=$PID"
exit 3
fi
fi
echo $$ > $TMP_PID
Ontem a noite fiz algumas alterações e testes e parece que tinha resolvido, hoje de manhã foi ver os Logs e ele estava dando que tem outra instância em execução, fui ver o arquivo do PID e estava com data de ontem as 22h +- onde terminei os testes e achei que tinha resolvido
antes o [ ! -z "`ps | grep $PID`" ] era apenas [ "`ps | grep $PID`" ] que assim nunca rodava pelo cron resultando no mesmo erro, mas pelo prompt funcionava perfeito, depois que adicionei ontem o "! -z" e testei várias vezes no Cron funcionou bem, depois já parou denovo!
grato