Foros del Web » Administración de Sistemas » Software para Servers »

cron job

Estas en el tema de cron job en el foro de Software para Servers en Foros del Web. Hola amigos espero puedan ayudarme ya que para completar un proyecto necesito ejecutar un archivo por medio de un cron asi que hice lo siguiente: ...
  #1 (permalink)  
Antiguo 27/04/2010, 09:41
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
cron job

Hola amigos espero puedan ayudarme ya que para completar un proyecto necesito ejecutar un archivo por medio de un cron asi que hice lo siguiente:


desde shell 1ero escribi crontab -e

despues escribi
* * * * * /home/usuario/public_html/carpeta/carpeta/php miscript.php

la idea es que se corra cada minuto el script para hacer una consulta en una tabla y copie informacion y la introduzca en otra tabla que es como bandeja de salida

el problema es que no hace la consulta, mi archivo funciona bien porque cuando lo corro directamente con el comando php miscript.php este puede hacer la consulta pero solo lo hace una vez por eso quiero usar un cron para que cada minuto se ejecute.

por favor ayudenme para ver cual es mi error y corregirlo................

saludos..........................
  #2 (permalink)  
Antiguo 27/04/2010, 11:41
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

¿pero acaso el intérprete de PHP está en /home/usuario/public_html/carpeta/carpeta?; apuesto a que no.

El comando debería ser:
php /ruta/al/archivo.php

y si quisieras ser más específico, ve bien dónde se ejecuta el intérprete de PHP, esto con el comando:
whereis php
__________________
I ♥ The Music!
  #3 (permalink)  
Antiguo 27/04/2010, 11:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

Gracias por responder

escribi el comando whereis php y me dio esta informacion

php: /usr/bin/php /etc/php.ini /etc/php.d /usr/lib/php /usr/lib/php.ini /usr/local/bin/php /usr/local/lib/php.ini /usr/local/lib/php /usr/local/lib/php.ini,v /usr/include/php /usr/share/man/man1/php.1.gz

como veras soy nuevo en algunas cosas de cron.

escribi ahora en crontab

* * * * * php/home/usuariyo/public_html/miscript.php

estoy esperando que el script funcione espero.

por favor dime si voy bien....

Última edición por LordRadium; 27/04/2010 a las 11:54
  #4 (permalink)  
Antiguo 27/04/2010, 12:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

no me funciona falta algo pro favor ayudenme........................
  #5 (permalink)  
Antiguo 27/04/2010, 13:19
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

hice esto ahora

* * * * * /usr/local/bin/php -q /home/usuario/public_html/carpeta/miscript.php

investigando segun tambien en mi script debo poner lo siguiente:

#!/usr/bin/php
<?php

<?

necesito saber si voy bien por favor ayudenme
  #6 (permalink)  
Antiguo 27/04/2010, 14:10
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Cita:
Iniciado por LordRadium Ver Mensaje
investigando segun tambien en mi script debo poner lo siguiente:
No. Es lo uno u lo otro.

PHP es un lenguaje interpretado, necesitas llamar al interprete y pasarle como parámetro el código a ejecutar. Lo segundo que mencionar es metainformación para que el sistema sepa donde está el intérprete y este sea "auto-ejecutable"; también se puede, pero no son ambas.

El comando que te debería servir es (ojo con los espacios):
* * * * * /usr/bin/php /home/usuariyo/public_html/miscript.php


Y esto es un foro, no un chat y es obvio que si creas el tema es porque necesitas ayuda que, poca o mucha, se te ofrece desinteresadamente; no necesitas repetirlo en cada momento. Esas actitudes resultan molestas, cuidado con ello.

Espero te resulte. Suerte.
__________________
I ♥ The Music!
  #7 (permalink)  
Antiguo 27/04/2010, 16:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

hola

lo probe pero no hace su consulta.........

sigo buscando
  #8 (permalink)  
Antiguo 27/04/2010, 16:35
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

como puedo ver si se esta ejecutando para descartar otros errores o algun problema del servidor
  #9 (permalink)  
Antiguo 27/04/2010, 17:29
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Cita:
Iniciado por LordRadium Ver Mensaje
como puedo ver si se esta ejecutando para descartar otros errores o algun problema del servidor
¿Con un poco de imaginación?. ¿Por qué no creas un archivo desde tu script o algo?. Por favor, esto no es un chat. Haz tantito por averiguar cual es el fallo...

Crea un archivo con el siguiente contenido:
Código PHP:
Ver original
  1. <?php
  2.  
  3. echo 'Son las ' . date('H:i:s') . "\n";

Colócalo en la ruta que sea (¿la misma del que intentas ejecutar?). Y crea un cron ejecutando dicho archivo:
Código:
* * * * * /usr/bin/php /ruta/al/archivo.php >> /tmp/salida.log
Suponiendo tienes acceso a /tmp, si no puedes direccionar al mismo directorio donde se ejecuta el script. Luego, ve dicho archivo (obviamente, esperar pase al menos un minuto).

Recuerda que la ejecución de hace desde "consola" y del intérprete directamente; no está Apache involucrado, si tiene alguna salida tu script puedes redireccionarla a algún archivo, como lo hago en este ejemplo.
__________________
I ♥ The Music!
  #10 (permalink)  
Antiguo 28/04/2010, 13:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

gracias maturano ya cheque con otro archivo pero escribi el cron de la siguiente forma php /home/usuario/public_html/ruta/al/script.php

y funciono muy bien y ya determine en el correo que el archivo que quiero correr no corre por un problema en php

y recibo este error Fatal error</b>: Maximum execution time of 30 seconds exceeded in

investigando en internet me di cuenta que debo modificar el php init asi que estoy con eso.

gracias...........................
  #11 (permalink)  
Antiguo 28/04/2010, 14:21
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Cita:
Iniciado por LordRadium Ver Mensaje
y recibo este error Fatal error</b>: Maximum execution time of 30 seconds exceeded in

investigando en internet me di cuenta que debo modificar el php init asi que estoy con eso.
El error es porque el script está tomando más de 30 segundos en ejecutarse. En general, 30 segundos debe ser suficiente tiempo para que trabaje un script, si toma más de esto puede ser que haya un problema con el código/algoritmo.

No te sugeriría cambiar el parámetro desde el php.ini, esto lo cambia la configuración general, si otro script tuviera "este problema" podría consumirte procesador y/o memoria sin "darte cuenta".

Lo que puedes hacer es cambiar el tiempo máximo de ejecución para ese script en específico, eso gracias a la función set_time_limit() de PHP. Solo colócala al inicio del script de la siguiente manera:
Código PHP:
Ver original
  1. <?php
  2.  
  3. // Código PHP que toma más de 30 segundos en ejecutarse
  4. // y que ahora puede tomarse hasta 1 minuto
Por favor checha la documentación al respecto:
www.php.net/set_time_limit
__________________
I ♥ The Music!
  #12 (permalink)  
Antiguo 29/04/2010, 09:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

gracias maturano

me sirve pero, solo una consulta mas para perfecionar esto

El cron al igual que si corriera nohup php script.php & me guarda el mensaje que produce la corrida del programa pero lo manda al correo del servidor, lo que quiero evitar es que me sature la memoria, porque despues de una semana me va a dejar inservible el servidor, estoy viendo si puedo hacer que el servidor automaticamente borre los correos o modificar mi codigo para que no mande mensajes muy pesados pero quiero saber como puedo hacerle para controlar mejor esto y asi dejar perfecto mi sistema.

saludos.................
  #13 (permalink)  
Antiguo 29/04/2010, 14:25
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Esos puntos del final quedarían mejor para separar enunciados; donde corresponden. No he entendido del todo tu mensaje, cuida tu redacción.

Por lo que comprendí, ¿no quieres realizar otro CRON que haga otra cosa?.
__________________
I ♥ The Music!
  #14 (permalink)  
Antiguo 29/04/2010, 14:50
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

Otra pregunta, el cron cuando lo corro hace su trabajo sin ningun problema, pero despues de un tiempo el shell me manda este mensaje

-bash: fork: Resource temporarily unavailable

ya se que es porque el limete de procesos ya fue alcanzado, como puedo corregir, ya vie que es por el cron unicamente porque corro otro script con nohup y este se cae despues de un tiempo y cuando borro el cron el mensaje anterior mostrado deja de aparecer y puedo correr otra vez el script que corro con nohup

saludos.......................
  #15 (permalink)  
Antiguo 30/04/2010, 08:51
cce
 
Fecha de Ingreso: junio-2009
Mensajes: 92
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: cron job

Buenas, estoy teniendo problemas con el crontab -e, y al ver esta discucion me enganche..espero no mal..espero no molestar o hacer algo q no debo...bue..aca va el problemmita mio.

Hice un script en bash el cual al ejecutarlo desde consola de linux funciona como debe funcionar, pero al querer utilizar crontab no hace lo que debe.

Script:
#!/bin/bash

DIR_BD="/home/usuario/respaldo/backup"
DIR_LOG="/home/usuario/respaldo/log"

# 1º: calculo el porcentaje de espacio ocupado de la particion

ESPACIO_OCUPADO=`df /$DIR_BD | awk '{print $5}' | grep -a %`


#2º : Quito el simbolo % para poder trabajar solo con numeros.

ESPACIO_ABSOLUTO=`expr match "$ESPACIO_OCUPADO" '\([0-9]*[0-9]\)'`

echo $ESPACIO_ABSOLUTO >> /$DIR_LOG/backup.log

Si yo ejecuto esto desde consola, funciona lo mas bien.

Pero lo ejecuto con el crontab -e a la variable $ESPACIO_ABSOLUTO la deja vacia, lo demas lo hace bien.

Cual es el problema?

Cualquier ayudita me viene de diez.

Muchas Gracias.

Saludos.-
  #16 (permalink)  
Antiguo 03/05/2010, 14:08
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

le he cambiado algunas cosas a mi script para tratar de encontrar el problema.

lo deje 2 dias el cron pero la llamada la hacia cada 10 minutos el problema es que me duro casi los dos dias hasta que finalmente fallo y en la consola del shell me manda como siempre el siguente mensaje

fork: Resource temporarily unavailable

he investigado porque pero por mas que le busco no encuentro el porque el servidor hace esto en mi opinion el script no deberia provocar esto se supone que el cron al llamar cada minuto mi script no deberia provocar este problema.

tengo otro script ejecutandose con nohup al mismo tiempo que el script que llamo con cron jobs se ejecuta sera por ahi, que piensan, porqu con mas que le doy vuelta no puedo cambiar el script que usa el cron asi que necesito saber si el cron con nohup al mismo consumen procesador o no se.

saludos.......................................
  #17 (permalink)  
Antiguo 03/05/2010, 16:02
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Así sin buscarle más, diría que es un problema de RAM. Algo es seguro, es un mensaje del SO, no de PHP.

¿Cuánto tiempo tarda tu script?. Porque aquí mismo mencionaste que tardaba más de 30 segundos --y dije, no es buena señal-- y no mencioné cambiarlo a 60 en vano. ¿Cuánto le pusiste y cúanto está tardando?. ¿Por qué paralelamente ejecutas otro proceso por nohup?

Adivinaría lo que estás lanzando muchos procesos...
__________________
I ♥ The Music!

Última edición por maturano; 03/05/2010 a las 23:02
  #18 (permalink)  
Antiguo 03/05/2010, 16:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

el script tardaba por un while en procesarse 59 segundos, le baje esto a 30 segundos y puse en la instruccion que me mencionaste 60 para evitar algun error

este script lo que hace es buscar mensajes en una tabla verificar cuando tienen que salir, copiarlos si se cumple la condicion y pegarlos en otra tabla que seria como una bandeja de salida.

el otro lo mando por nohup porque es necesario que este constantemente corriendo para consultar en la bandeja de salida y enviar el mensaje.

estoy viendo si se puede aumentar el limite de procesos con ulimit.
  #19 (permalink)  
Antiguo 04/05/2010, 08:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

ahora le elimine la instruccion set_time_limit(60); y en el while lo deje en 30 segundos, hace la consulta funciona y to pero de todas maneras me manda el mensaje de que excedio mas de 30 segundos en ejecutarse y en la consola me aparece el mensaje fork, estoy viendo si puedo reducir lo mas que pueda el uso de memoria de mis scripts pero creo que lo mejor seria aumentarle la capacidad para poder realizar mas procesos.
  #20 (permalink)  
Antiguo 04/05/2010, 11:02
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Cita:
Iniciado por LordRadium Ver Mensaje
y en el while lo deje en 30 segundos
¿¿¿que qué???

Repito, que algo te tarde más de 30 segundos es mala señal. Estará mal tu algoritmo/script; tus palabras no son buena señal ...

Esto ya está muy por fuera del tema original.
__________________
I ♥ The Music!
  #21 (permalink)  
Antiguo 04/05/2010, 11:53
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

pues si ya nos estamos metiendo a programacion y no webhosting de todas maneras te muestro mi script o parte del mismo para ver que opinas

$veces = date("s");
$time_to_processor = 30;
while (1)
{ $minuto_actual = date("s");
if ($minuto_actual<$veces)
$veces=$minuto_actual;
if (($minuto_actual - $veces)== $time_to_processor) {

$dif= $hora_local - date('0')/100;
$new_time = strtotime($dif." hours");
$now = date("Y-m-d H:i:s", $new_time);
//$now = date("Y-m-d H:i:s");


verificar_pendiente($mail,$now,$maximo, $estado, $fechanotif, $iduser);

$veces=$minuto_actual;







print "Tarea a enviar..\n estado: $estado \n: fecha:$fechanotif \n usuario:$iduser \n";






}





}
  #22 (permalink)  
Antiguo 04/05/2010, 12:46
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: cron job

Cita:
Iniciado por LordRadium Ver Mensaje
de todas maneras te muestro mi script o parte del mismo para ver que opinas
Mal, la verdad. Mala manera de manejar el tiempo de ejecución, no puedes --sí puedes, no deberías-- contar con que tu script se inicie en el minuto exacto. Debes considerar términos generales, en todo caso, la utilización de la función microtime() de PHP.
www.php.net/microtime

Tienes problema de lógica al hacer la comparación al inicio del bucle. ¿y un ciclo toma más de un minuto?. Realmente, como código, lo veo mal.

Sin mencionar que, si vas a limitar el script a un tiempo dentro del propio script, ¿qué sentido tiene lanzarlo cada minuto desde un CRON?. El script debería hacer su trabajo y hacerlo bien. Tener un principio y un fin, no hacer este tipo de "mañas" ... nuevamente, ese razonamiento tuyo no es buena señal.

Y solo muestras la parte del "control del tiempo", pensar en las llamadas que haz de hacer a la base de datos ... ese un cuello de botella común y apostaría lo estás manejando de una muy mala manera.

Por lo poco que he alcanzado a entender, no hay ni necesidad de un bucle y en poco procesos debería hacer su trabajo. Pero esto ya es asunto de programación creo correspondería estar en el foro de PHP, si quisieras consultar más opiniones sobre lo que haces.
__________________
I ♥ The Music!
  #23 (permalink)  
Antiguo 04/05/2010, 15:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 140
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cron job

gracia maturano por lo pronto me paso a el for de php para arreglar esto

otra pregunta ya dentro de web hosting, el otro archivo que ejecuto usando hohup llega el momento que solito se da un kill y cuando reviso el archivo que se genera me manda el mensaje "error: no se encuentra la base de datos".

se me hace raro porque sin ejecutar el otro script con cron ya me salia ese mensaje, obvio la conexion a la base de datos esta bien asi que estoy buscando el porque de repente sale este error.

gracias maturano

Etiquetas: cron, job, servidores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.