• Publicidad

Problemas al ejecutar script Perl y sh con un cron

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problemas al ejecutar script Perl y sh con un cron

Notapor Johann Rangel » 2010-02-04 09:57 @456

Saludos a todos.

Tengo un problema con la ejecución de un script Perl desde un cron. El script al ejecutarse llama a un script en sh para ejecutarlo según las condiciones. Al ejecutarlo manualmente funciona sin ningún problema pero al ejecutarse con el cron el script Perl no ejecuta los sh que llama con la sentencia system().

Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (condicion){

system('./ejemplo.sh');

}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Gracias de antemano.
Johann Rangel
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2009-11-03 07:25 @350

Publicidad

Re: Problemas al ejecutar script Perl y sh con un cron

Notapor 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
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados