Bloco condicional no crontab

1

É possível colocar uma instrução "if" no crontab de um usuário, ou há outra maneira sensata de organizar muitos trabalhos agendadores condicionais? Do ponto de vista do usuário final, seria mais fácil se eles pudessem usar o crontab normal e colocar suas entradas entre duas linhas, se possível.

Idealmente, algo como:

if [ something ]; then
* * * * * /usr/bin/php /path/to/file.php
0 0 * * * /usr/bin/php /path/to/file2.php
*/5 * * * * /root/script.sh
fi
    
por James 02.10.2015 / 12:38

2 respostas

9

Não é possível fazer exatamente isso.

O que você pode fazer, no entanto, é criar um script como /usr/local/bin/check_live - que sai com o código de status 0 se o servidor estiver ativo no momento e diferente de zero se não estiver.

Você pode então ter linhas crontab como:

* * * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file.php
0 0 * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file2.php
*/5 * * * * /usr/local/bin/check_live && /root/script.sh
    
por 02.10.2015 / 18:59
0

Eu não recomendaria colocá-lo no arquivo crontab. Em vez disso, crie um script onde você definirá suas condições e, em seguida, colocará no arquivo crontab. Você terá uma configuração muito mais limpa e organizada.

    
por 08.10.2015 / 21:47

Tags