por explorer » 2010-02-04 17:39 @777
Bienvenido a los foros de Perl en Español, Johann Rangel.
Puede ser debido a dos causas principales:
1.- El cron puede estar siendo ejecutado por un usuario distinto al que lo creó. En ese caso, los programas podrían tener problemas de permisos para acceder a partes del sistema en donde el usuario que ejecuta el cron no tenga suficientes privilegios.
2.- Si el cron ha sido instalado por el mismo usuario que es dueño de los ejecutables, entonces la otra causa posible puede ser que hay que recordar que los programas ejecutados desde cron lo hacen desde un directorio de trabajo que será distinto al normal. Un ejemplo: tus programas están en /home/jrangel/bin/programa.pl. Puedes ejecutar ese programa porque /home/jrangel/bin forma parte de uno de los directorios de $PATH, y el sistema lo encuentra cuando lo mandas ejecutar. Pero el cron, como usuario, no tiene tu mismo $PATH. Y es posible que su directorio de trabajo sea /home/jrangel. Si le mandas ejecutar ./ejemplo.sh, intentará buscarlo en ese directorio de trabajo.
Para resolver este segundo caso, tienes dos opciones:
a.- al principio del programa, haz un chdir() y colócate en el directorio de trabajo real, en donde quieres trabajar y donde se pueda localizar a tu programa, o
b.- ejecuta tu programa indicando una ruta absoluta: system(/home/jrangel/bin/ejemplo.sh);
El elegir uno u otro, también depende de lo que haga después ese programa.
Resumen: las condiciones de trabajo para cron -suelen ser- distintas que para el usuario normal. Repasa el man cron, sobre todo la parte de Entorno.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES