Pregunta

Gracias por ayudarme a configurar mis trabajos cron. crontab realmente ha sido una mina de oro para mí.

Desafortunadamente tengo un problema y no tengo idea de qué podría ser...Básicamente, un trabajo no comienza mientras lo hacen los trabajos vecinos.Lo explicaré


Esta es mi lista de trabajos de crontabs:

*/10 * * * * python /webapps/foo/manage.py fetch_articles

*/10 * * * * python /webapps/bar/manage.py fetch_books

Los escribí tal como están en un archivo y los almacené usando crontab /path/to/file .

Comprobado con crontab -l y los trabajos están ahí.


Lo extraño es que 1 de estos se ejecuta cada 10 minutos normalmente...pero el otro no.Intenté escribir el comando manualmente y funciona bien sin problemas.


¿Alguien tiene sugerencias?

La ayuda sería muy apreciada, gracias chicos.


Actualizar:

Estuve en los archivos de registro del sistema y encontré esto:

5 de marzo 02:50:01 localhost CRON[21652]:(raíz) CMD (python /webapps/foo/manage.py fetch_books)

¿Esto significa que crontab está ejecutando bien el trabajo?


¡Gracias por sus respuestas chicos!


¡ARREGLADO!¡¡Muchas gracias a todos!!

El problema fue que el script falló silenciosamente, creo que se debe a que PYTHON_PATH cambió debido al lugar desde donde se llama el script...Estoy completamente seguro.

¿Fue útil?

Solución

Cron siempre se ejecuta en un entorno diferente a lo que usted piensa: -)

Siempre he puesto mis cronjobs arriba como:

*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1

para asegurarse de que hay algo conectado que puedo mirar.

Esto reducirá el problema a cualquiera:

  • cron, si no aparece el archivo temporal; o
  • la secuencia de comandos, si aparece.

Y, en este último caso, es de esperar que habrá alguna salida puede depurar. Si no es así, la salida de poner ahí.

Una forma de hacerlo es poner:

set -x

en la parte superior de la secuencia de comandos que hará que todas las líneas se impriman antes de la ejecución. Todos mis guiones tienden a empezar:

#!/bin/bash
#set -x

para que pueda simplemente elimine el comentario de que la segunda línea durante la depuración.

Otros consejos

Desde la página de manual crontab:

  

FALLOS          Aunque cron requiere que cada entrada en un extremo en un crontab   carácter de nueva línea          ni el comando crontab ni el demonio cron lo detectará   error. En lugar,          el crontab aparecerá para cargar normalmente. Sin embargo, el comando   Nunca se ejecutará.           La mejor opción es para asegurar que su crontab tiene una línea en blanco   el final.

(el subrayado es mío).

Creo que la respuesta de ~ unutbu es probablemente correcto si es el segundo trabajo que no se ejecuta.

Sin embargo, otra cosa a comprobar es si /webapps/bar/manage.py requiere acceso exclusivo a los recursos, por ejemplo, las conexiones de red / TEMPFILES etc. Puesto que usted está comenzando 2 procesos al mismo tiempo, puede estar provocando una condición de carrera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top