Eu tenho um servidor no qual existem cerca de 100 empregos Cron que executam vários scripts PHP. A tarefa em mãos é gerar um alerta sempre que ocorrer um erro na execução de um script PHP.
Os Crons são definidos da seguinte forma:
30 08 * * * /usr/bin/php /var/www/html/phpscirpt1.php > /var/www/html/phpscript1.log 2>&1
O que tentei é colocar um &&
no final, mas isso gera o E-mail de Alerta de qualquer maneira
30 08 * * * /usr/bin/php /var/www/html/phpscript1.php > /var/www/html/phpscript1.log 2>&1 && <Generate Mail>
O caso ideal que deveria funcionar seria
/bin/bash /home/myUser/testfile.sh > /home/myUser/testfile.log 2>&1 ; [$? == 1] && /bin/bash script.sh
O seguinte é apenas uma amostra para fins de teste, quando
/bin/bash /home/myUser/testfile.sh > /home/myUser/testfile.log 2>&1
é executado testfile.sh cria apenas um diretório. Quando o comando acima é executado na primeira vez, echo $?
fornece a saída 0
, mas a execução do comando retorna novamente 1
, porque os scripts retornam e registram um erro
mkdir: cannot create directory '/home/myUser/testdir': File exists
E, basicamente, isso é o que é necessário, sempre que o script em um cron falhar, ele deve gerar um alerta na forma de um e-mail. No exemplo acima, script.sh
contém um comando mail -s
para enviar o e-mail.
Mas quando o comando complete é executado, um erro é retornado, que é o seguinte
/bin/bash /home/myUser/testfile.sh > /home/myUser/testfile.log 2>&1 ; [$? == 1] && /bin/bash script.sh
-bash: [1: command not found
Eu apreciaria muito qualquer orientação que pudesse ser fornecida para resolver esse erro. Obrigado