2011-02-07 18 views
7

Pila:Tarea de rastrillo de Crontab?

Apache 2

Rails 2.3.8

RedHat Linux

Rubí Empresa 1.8.7

salía esta tarea rastrillo en el crontab mi aplicación de usuario que está destinado a extraer registros en una tabla de la base de datos cada 15 minutos:

*/15 * * * * app_user cd /var/www/apps/my_app/current/ && rake thing:do_stuff RAILS_ENV=production 

Veo que el daemon cron está ejecutando esta tarea en el registro cron, pero la tabla de la base de datos a la que se supone que debe pasar los registros no cambia. Esta tarea funciona sin errores cuando la ejecuto manualmente en el directorio/var/www/apps/my_app/current y extraigo los registros en la tabla como lo espero.

puedo restablecer la variable PATH en el crontab para reflejar el uso de REE, pensando que tal vez la ruta por defecto no lo haría con Jive/opt/rubí empresa ...

¿Cómo consigo esta tarea rastrillo para ejecutar realmente con cron?

+1

¿Lo está ejecutando como ese usuario también? sudo su app_user, luego ejecuta el comando EXACTAMENTE ya que está en el trabajo cron. Debería funcionar en cron si funciona así. –

Respuesta

8

Trate de usar la ruta completa al rastrillo binario (ejecute en la consola which rake y reemplace el rastrillo con la ruta completa).

Por ejemplo, si which rake devuelve la siguiente ruta:

/Users/bob/.rvm/gems/ruby-1.9.3-p194/bin/rake 

se debe utilizar el siguiente comando para ejecutar la tarea rake:

/Users/bob/.rvm/bin/rvm all do bundle exec rake allocator:snapshot 

y prefiero siempre joya para los trabajos de cron en rubí

Cómo detectar si la tarea falló en cron? El cron de falla intenta enviar un correo electrónico. Entonces puede configurar postfix para usar su configuración de smtp (de google, por ejemplo), y agregar el archivo ~/.forward que contiene solo su correo electrónico al directorio de inicio del usuario que está ejecutando ese cronjob en su sistema.

10
0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/apps/my_app/current && RAILS_ENV=production bundle exec rake thing:do_stuff --silent'