La sintaxis para la entrada crontab parece correcta. De hecho, si edita su crontab usando " crontab -e
" (como debería), obtendrá un error si especifica una entrada de crontab sintácticamente inválida de todos modos.
En primer lugar, ¿se /path_to_my_php_script/info.php
ejecuta correctamente desde la línea de comandos?
Si es así, ¿también funciona correctamente así ?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Si eso funciona, ¿funciona así?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
El paso (3) es similar a cómo cron ejecutará su programa (como se documenta en "man 5 cron".
El problema más probable que tiene es que el cron PATH está utilizando para ejecutar su programa es demasiado restrictivo. Por lo tanto, es posible que desee agregar algo como lo siguiente a la parte superior de su entrada de crontab (deberá agregar los directorios que necesite su script):
PATH=~/bin:/usr/bin/:/bin
También tenga en cuenta que cron usará de forma predeterminada /bin/sh
, no bash. Si necesita bash, también agregue esto al inicio de su archivo crontab:
SHELL=/bin/bash
Tenga en cuenta que ambos cambios afectarán a todas las entradas de crontab. Si solo desea modificar estos valores para su info.php
programa, puede hacer algo como esto:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
También vale la pena mencionar que en un sistema configurado para "correo" (en otras palabras, un sistema que tiene un MTA configurado [sendmail / postfix / etc]), toda la salida de los programas crontab se le envía automáticamente por correo electrónico. Un sistema de escritorio Ubuntu predeterminado no tendrá configurado el correo local, pero si está trabajando en un servidor, simplemente puede escribir "mail" en una terminal para ver todos esos correos cron. Esto también se aplica al at
comando " ".