• Publicidad

Cron o cómo repetir cada X tiempo en Windows

¿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.

Cron o cómo repetir cada X tiempo en Windows

Notapor Kiloko » 2007-07-11 12:13 @551

Tengo mi código y necesito que éste se repita cada X tiempo, que yo mismo defino (1, 3, 5 minutos o 4 horas).

Ejecuto mi programa y éste realiza una acción cada X tiempo y así durante todo el día (cada X semanas cada X años).

Me comentan que puedo utilizar Cron, pero según lo entiendo, toma un módulo de tiempo anidado en un X espacio web (servidor) y lo manda llamar para que éste sea la referencia de tiempo, pero al parecer no está disponible en Windows.

Algunas opciones que he encontrado son: Instalar un emulador, Cronw, pero no logro hacerlo funcionar. Mi otra opción es utilizar un for anidado para crear las repeticiones y por medio de sleep hacer pausas.

Lo que quiero hacer es un programa x que haga que funcione el programa y y que corra cada X tiempo (2 minutos, 2 días, etc) haga lo que tiene que hacer y que se muera y se repita el ciclo.

Que me sugieren. Ojo, lo estoy haciendo en Windows.
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Publicidad

Notapor explorer » 2007-07-11 14:30 @645

Bienvenido a los foros de Perl en Español.

Windows dispone del programa Tareas programadas para esas cosas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Schedule Tasks

Notapor Kiloko » 2007-07-11 14:43 @655

Creo que te refieres al Schedule Tasks pero no logro hacer la conexión entre la ejecución y al proceso Cron. Y por cierto, ¿a qué servidor se tendría que conectar?

Algo así estaría en el run:

C:\PROGRA~1\INTERN~1\IEXPLORE.EXEhttp:\www.example.com\cron.php
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-07-11 14:53 @662

¡Ah, tu lo que quieres es ejecutar un programa hecho en PHP!.

Pues... hay varias opciones.

* Instalas un servidor web con soporte para PHP en la máquina y en las Tareas programadas pides que arranque el iexplore.exe pasándole como parámetro la dirección http://localhost/cron.php, suponiendo que has dejado la página cron.php en el raíz del web.

* En Linux se pueden ejecutar programas hechos con PHP usando el ejecutable php (obvio). Por ejemplo: php cron.php. Pero no tengo ni idea de si en Windows existe algo parecido (lo siento, hace años que ya no uso Windows).

* Pasas el programa cron.php a Perl y puedes ejecutarlo como en la opción anterior.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

nop

Notapor Kiloko » 2007-07-11 15:32 @689

nop, yo quiero hacer 2 programas en Perl.

Programa (1): Debe de decir: cuantas veces se va a ejecutar el programa
2 y durante cuanto tiempo. Aquí es donde no sé cómo usar el
cron o que otra opción tengo para poder hacerlo.
Este programa no lo tengo.

Programa (2) Ejecuta una rutina que saca info y demas,
Este programa ya lo tengo.

Saludos...
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-07-11 17:53 @787

Como no quieres usar las Tareas Programadas de Windows para la tarea 1, yo usaría un módulo como Schedule::Cron, con la atención puesta de que al estar en Windows, por ser un sistema operativo limitado, no puedes hacer un fork del proceso que se debe ejecutar cuando salta la alarma, por lo que estarás obligado a ejecutarlos siempre con la opción nofork puesta a 1. Esto tiene la desventaja de que la ejecución del programa 2 puede interferir en el disparo de los siguientes eventos, si la ejecución es muy larga.

Yo recuerdo que se me planteó este problema hace casi 5 años para un ordenador que teníamos que enviar a Marruecos y el problema era que se tenía que activar un programa Perl que realizaba un FTP a nuestro servidor, para bajarse unos ficheros. Lo resolví muy fácil con las Tareas Programadas, ya que le puse que se ejecutara todos los días a las 00:30 (y otras condiciones de seguridad más, como evitar que se ejecutara dos veces y que matara el proceso si llevaba demasiado tiempo activo).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-07-11 18:54 @829

Creo que tienes razón, sería mejor utilizar las tareas programadas para Windows, pero todo indica que se ejecuta, pero no se crea el archivo TXT que debería... humm, está raro porque si lo ejecuto en DOS, sale, y también con Komodo. ¿Qué podrá ser?, ¿será conveniente hacerlo en un .exe?
¿Algo así como mandar llamar a DOS y poner la ruta y el path?
Nada mas que no me acuerdo de como hacerlo. Jajajaja, hace años que no veo DOS... a ese nivel.
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-07-11 19:27 @852

* Cuando se ejecuta una tarea por parte de un daemon, debemos tener la precaución de que nuestro programa sabe el directorio de trabajo en que está, porque la mayor parte de los daemon ejecutarán los programas en un determinado directorio de trabajo (uno del sistema, el temporal, o algo peor). Que tu no veas la salida no significa que no la haya creado, sino que quizás lo ha hecho en un directorio muy distinto al que ves. Para solucionar esto, lo normal es colocar un chdir('path completo'); al principio del programa. Así estaremos seguros de que las operaciones con ficheros se realizan en el directorio correcto y no en el que el daemon le de la gana (que quizás sea tampoco donde reside el ejecutable. Lo normal en Windows podría ser el directorio home del usuario).

* Si después de lo anterior sigue sin funcionar, es posible que Tareas Programadas no sepa qué hacer con un script Perl. Si has instalado una distribución como la de ActiveState, se habrá registrado en el sistema que los ficheros con extensión .pl deben ser ejecutados por el binario C:\Perl\bin\perl.exe, por lo que podremos ejecutarlos directamente en línea de comandos y otros lugares, quizás también en Tareas Programadas. Si has utilizado otra distribución que no haya hecho ese registro, puedes configurar Windows con ese comportamiento (en las opciones de carpeta, creo recordar). Y si aún así no funciona, siempre queda la opción de que le digas a Tareas Programadas que el binario a ejecutar sea el C:\Perl\bin\perl.exe (o donde esté el intérprete perl de Perl) poniendo a continuación el nombre del fichero Perl que quieres ejecutar. Por ejemplo:

Código: Seleccionar todo
C:\Perl\bin\perl.exe C:\Desarrollo\Proyecto\Tiempos\Cron\programa_1.pl


Cuidado con los espacios en blanco en los path... si los hay, entrecomilla el argumento.

Buscando por Google, me sale esta referencia:
http://www.randomtree.org/eric/techblog ... tizen.html
en la que muestra que es incluso aún más sencillo, porque en los últimos Windows ya se puede indicar el directorio de trabajo, con lo que queda reducido a:

Código: Seleccionar todo
perl programa_1.pl
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-07-12 09:43 @447

No pues esta cañón, de plano ya me estoy dando por vencido, ya que cada vez que se ejecuta, se ejecuta como TXT y eso que cambio el tipo de archivo y el modo de abrirlo del archivo .pl. Ya no sé qué hacer, no puedo hacer que mi archivo.pl se ejecute... :(
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-07-12 09:50 @451

¿Qué significa eso de que se ejecuta como TXT?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado