Bloque condicional en crontab

Bloque condicional en crontab

¿Es posible poner una declaración "si" en el crontab de un usuario, o existe otra forma sensata de organizar muchos trabajos cron condicionales? Desde la perspectiva del usuario final, sería más fácil si pudiera usar el crontab normal y, si es posible, simplemente colocar sus entradas entre dos líneas.

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

Respuesta1

No es posible hacer precisamente esto.

Sin embargo, lo que puede hacer es crear un script como /usr/local/bin/check_live: que salga con el código de estado 0 si el servidor está actualmente activo y distinto de cero si no lo está.

Luego puedes tener líneas 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

Respuesta2

No recomendaría ponerlo en un archivo crontab. En su lugar, cree una secuencia de comandos donde establecerá sus condiciones y luego la colocará en el archivo crontab. Tendrás una configuración mucho más limpia y organizada.

información relacionada