Procesos en background


#1

Me equivoque de foro y potee mi duda en el ingles. Si algun
administrador puede mover el hilo aqui creo que sera mejor para todos.

Agradeceria cualquier ayuda, el link:

http://www.ruby-forum.com/topic/184763#new


#2

Como indico en el enlace estoy intentando hacer funcionar el
script/runner. Quiero ejecutar un metodo de mimodelo cada minuto para
realizar una serie de pruebas. Para ello en en el crontab escribo la
siguiente linea:

*/1 * * * * /usr/local/bin/ruby user/jose/mimandote.com/script/runner
‘Usuario.usuario_del_dia’

Por consola se avisa que cron envia un correo en forma de log a
/var/mail/jose. Asi que hasta alli me he ido, el log que se observa es
el siguiente:

From removed_email_address@domain.invalid Tue Apr 21 10:04:00 2009
Return-Path: removed_email_address@domain.invalid
X-Original-To: jose
Delivered-To: removed_email_address@domain.invalid
Received: by Jose.local (Postfix, from userid 503)
id 1506A53D700; Tue, 21 Apr 2009 10:04:00 +0200 (CEST)
From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron jose@Jose /usr/local/bin/ruby
user/jose/mimandote.com/script/runner ‘Usuario.usuario_del_dia’
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: removed_email_address@domain.invalid
Date: Tue, 21 Apr 2009 10:04:00 +0200 (CEST)

/bin/sh: /usr/local/bin/ruby: No such file or directory

El problema viene por los valores que tiene el Cron-Env por defecto? No
entiendo porque dice que no existe /usr/local/bin/ruby


#3

El Tuesday 21 April 2009 10:11:57 Jose vicente Ribera pellicer
escribió:>

Subject: Cron jose@Jose /usr/local/bin/ruby

El problema viene por los valores que tiene el Cron-Env por defecto? No
entiendo porque dice que no existe /usr/local/bin/ruby

Seguramente sea porque no existe en el sistema el fichero
/usr/local/bin/ruby,
lo tendras en otra ruta o igual se llama /usr/local/bin/ruby1.8 o algo
asi


Sergio Cambra .:: entreCables S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) removed_email_address@domain.invalid


#4

El día 21 de abril de 2009 10:11, Jose vicente Ribera pellicer
removed_email_address@domain.invalid
escribió:> Como indico en el enlace estoy intentando hacer funcionar el

script/runner. Quiero ejecutar un metodo de mimodelo cada minuto para
realizar una serie de pruebas. Para ello en en el crontab escribo la
siguiente linea:

*/1 * * * * /usr/local/bin/ruby user/jose/mimandote.com/script/runner
‘Usuario.usuario_del_dia’

Si la vas a ejecutar cada minuto, no te hace falta poner */1 , te
basta con * como indicador de minutos

From: removed_email_address@domain.invalid (Cron Daemon)

/bin/sh: /usr/local/bin/ruby: No such file or directory

Ahí te está diciendo que no existe /usr/local/bin/ruby. ¿Estás seguro
de que está ahí? Ejecuta esto para saber dónde está ruby en tu server:

which ruby

El problema viene por los valores que tiene el Cron-Env por defecto? No
entiendo porque dice que no existe /usr/local/bin/ruby

Yo para estas cosas prefiero hacerlas de otro modo, en lugar de
ponerlas tan directamente en cron, las meto en un script shell dentro
de la aplicación. Por ejemplo, la podrías poner en una nueva carpeta
lib/cron y tener allí todo lo que vayas a ejecutar con cron, por
ejemplo:

lib/cron/usuario_del_dia.sh

Aparte, por lo que veo tu aplicación dices que está en user/jose…
pero eso es una ruta relativa, ¿no deberías poner /users/jose/… o
algo
así?

Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta


#5

Gracias por contestar Jaime. Voy por partes:

Ah� te est� diciendo que no existe /usr/local/bin/ruby. �Est�s seguro
de que est� ah�? Ejecuta esto para saber d�nde est� ruby en tu server:

which ruby

Ya lo he corregido. Desde consola:
which ruby
/opt/local/bin/ruby

Ejecuto crontab -e y pongo:

  •   *       *       *       *       /opt/local/bin/ruby 
    

/Users/jose/mimandote.com/script/runner 'Usuario.usuario_de$

  •   *       *       *       *       echo 
    

“hola”>>/Users/jose/prueba.txt

Cada minuto en prueba.txt si que se escribe hola, sin embargo si realizo
un cat jose en var/mail/jose no me actualiza el log que manda el cron,
el ultimo que se visualiza es el de antes de los cambios (y ya han
pasado unos cuantos minutos).

Yo para estas cosas prefiero hacerlas de otro modo, en lugar de
ponerlas tan directamente en cron, las meto en un script shell dentro
de la aplicaci�n. Por ejemplo, la podr�as poner en una nueva carpeta
lib/cron y tener all� todo lo que vayas a ejecutar con cron, por
ejemplo:

lib/cron/usuario_del_dia.sh

De momento estoy ahceindolo con el cron directamente hasta que salga.
Luego no descarto hacerlo asi por comodidad a la hora de editar.

Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta


#6

Parece que ya funciona!!

Me salta a un error, pero creo que es por un tema de que en localhost no
tngo las imagenes.

From removed_email_address@domain.invalid Tue Apr 21 12:33:02 2009
Return-Path: removed_email_address@domain.invalid
X-Original-To: jose
Delivered-To: removed_email_address@domain.invalid
Received: by Jose.local (Postfix, from userid 503)
id 8F5E753E1B0; Tue, 21 Apr 2009 12:33:02 +0200 (CEST)
From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron jose@Jose /opt/local/bin/ruby
/Users/jose/mimandote.com/script/runner ‘Usuario.new_usr_dia’
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: removed_email_address@domain.invalid
Date: Tue, 21 Apr 2009 12:33:02 +0200 (CEST)

/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47:
/Users/jose/mimandote.com/app/models/avatar.rb:21:in mkdir': No such file or directory - public/images/avatar (Errno::ENOENT) from /Users/jose/mimandote.com/app/models/avatar.rb:21:ininitialize’
from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
new' from /Users/jose/mimandote.com/app/models/usuario.rb:169:inavatar’
from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
new_usr_dia' from /Users/jose/mimandote.com/app/models/usuario.rb:250:ineach’
from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
new_usr_dia' from (eval):1 from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:ineval’
from
/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inrequire’
from /Users/jose/mimandote.com/script/runner:3

You have mail in /var/mail/jose


#7

En realidad no necesitas especificar en cron d�nde est� ruby,
directamente puedes ejecutar el comando script/runner, igual que para
ejecutarlo t� no necesitas mencionar a ruby. Igual que para lanzar
script/server en local no haces ruby script/server, no?

Tienes razon, saque la informacion de “The rails way” y como vi que lo
especificaban lo hice igual. Antes de subirlo para ver si solo falla
la foto voy a intentarlo implementar en otra parte de la aplicacion que
me funcione completamente en localhost para asegurarme al 100%.

Thanks a todos.


#8

OK, me alegro de que te funcione :slight_smile:

En realidad no necesitas especificar en cron dónde está ruby,
directamente puedes ejecutar el comando script/runner, igual que para
ejecutarlo tú no necesitas mencionar a ruby. Igual que para lanzar
script/server en local no haces ruby script/server, no?

2009/4/21 Jose vicente Ribera pellicer
removed_email_address@domain.invalid:

   id 8F5E753E1B0; Tue, 21 Apr 2009 12:33:02 +0200 (CEST)

Date: Tue, 21 Apr 2009 12:33:02 +0200 (CEST)
from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
Posted via http://www.ruby-forum.com/.


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta


#9

2009/4/21 Jose vicente Ribera pellicer
removed_email_address@domain.invalid

Jose vicente Ribera pellicer wrote:

Tengo un problema a la hora de actualizar el usuario del dia, y seguro
que es por las rutas. A la hora de asignar el usuario del dia lo que
hacemos es dentro de un grupo de usuarios que se han seleccionado
comprobar cuales tienen avatar y en funcion de esto se asignan como
tales o descartarlos como usuarios del dia.

Hola,

por favor, no acumules cuestiones distintas y sin relación en un mismo
hilo.
Abre un hilo nuevo con un asunto apropiado.

Muchas gracias


#10

Jose vicente Ribera pellicer wrote:

Tengo un problema a la hora de actualizar el usuario del dia, y seguro
que es por las rutas. A la hora de asignar el usuario del dia lo que
hacemos es dentro de un grupo de usuarios que se han seleccionado
comprobar cuales tienen avatar y en funcion de esto se asignan como
tales o descartarlos como usuarios del dia.

En el modelo del avatar loq ue hacemos primero es entrar en la funcion
initialize ue es la que genera el error. Esta lo unico que hace es crear
DIRECTORIO en duncion de si exitia o no.

DIRECTORIO = File.join(“public”, “images”, “avatar”)

def initialize(usuario, imagen=nil)
@usuario = usuario
@imagen = imagen
Dir.mkdir(DIRECTORIO) unless File.directory?(DIRECTORIO)
end

El problema esta aqui, pues el log de cron muestra lo sigueinte:

From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron jose@Jose /opt/local/bin/ruby
/Users/jose/mimandote.com/script/runner ‘Usuario.new_usr_dia’
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: removed_email_address@domain.invalid
Date: Tue, 21 Apr 2009 13:07:03 +0200 (CEST)

/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47:
/Users/jose/mimandote.com/app/models/avatar.rb:21:in mkdir': No such file or directory - public/images/avatar (Errno::ENOENT) from /Users/jose/mimandote.com/app/models/avatar.rb:21:ininitialize’
from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
new' from /Users/jose/mimandote.com/app/models/usuario.rb:169:inavatar’
from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
new_usr_dia' from /Users/jose/mimandote.com/app/models/usuario.rb:250:ineach’
from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
new_usr_dia' from (eval):1 from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:ineval’
from
/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inrequire’
from /Users/jose/mimandote.com/script/runner:3

Se esta quejando de que no existe la ruta public/images/avatar. Que
deberia hacer, pasarla como una ruta absoluta??. Esta claro que en ese
caso no valdria uan al estilo Users/jose/mimandote.com/public/… y
tendria que escribir la del servidor, verdad?. Como puedo obtener la
ruta del servidor, la verdad es que estoy un poco perdido en ese
aspecto?


#11

por favor, no acumules cuestiones distintas y sin relación en un mismo
hilo.
Abre un hilo nuevo con un asunto apropiado.

No hay problema, pero estaba continuando en el hilo ya que era todo
relacionado con las tareas cron.

Saludos