Nuestro equipo de especialistas luego de ciertos días de trabajo y de recopilar de datos, hallamos los datos necesarios, deseamos que te resulte útil en tu trabajo.
Solución:
El problema es probablemente que su $PATH es diferente en el entorno manual del entorno en el que se ejecuta crontab. Por eso, which
no puedo encontrar tus ejecutables. Para solucionar esto, primero imprima su ruta en el entorno manual (echo $PATH
), y luego configure manualmente PATH en la parte superior del script que ejecuta en crontab. O simplemente consulte los programas por su ruta completa.
Editar: agregue esto cerca de la parte superior de su secuencia de comandos, antes de todos los which
llamadas:
export PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:~/usr/lib/jvm/jdk-6/bin"
Otra forma más genérica es hacer que cron ejecute el proceso de inicio de sesión de bash del usuario. Además de la RUTA, esto también recogerá cualquier LD_LIBRARY_PATH, configuración de LANG, otras variables de entorno, etc. Para hacer esto, codifique su entrada crontab como:
34 12 * * * bash -l /home/db-backup/mysqlbackup.sh
Mi problema fue que configuré el trabajo cron en /etc/cron.d (Centos 7). Parece que al hacerlo necesito especificar el usuario que ejecuta el script, a diferencia de cuando se ingresa un cronjob a nivel de usuario.
Todo lo que tenía que hacer era
*/1 * * * * root perl /path/to/my/script.sh
*/5 * * * * root php /path/to/my/script.php
Donde “root” indica que estoy ejecutando el script como root. También debe asegurarse de que lo siguiente esté definido en la parte superior del archivo. Sus caminos pueden ser diferentes. Si no está seguro, pruebe el comando “cuál perl”, “cuál php”.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Calificaciones y comentarios
Si posees alguna suspicacia y disposición de ascender nuestro escrito te recomendamos ejecutar una explicación y con placer lo leeremos.