2010-09-27 15 views
5

Estoy usando BluePill para administrar procesos como el trabajo retrasado para Rails. En el registro de Bluepill, estoy consiguiendo este mensaje:Falta el archivo PID cuando se utiliza un administrador de procesos para iniciar el trabajo demorado

W, [2010-09-27T01:23:20.447053 #19441] WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read 
W, [2010-09-27T01:23:20.447368 #19441] WARN -- : [fsg_distro:delayed_job] Executing start command: ruby script/delayed_job -e production start 
I, [2010-09-27T01:23:20.469165 #19441] INFO -- : [fsg_distro:delayed_job] Going from down => starting 

por lo que es afirmar que un archivo pid es que falta, que lo es, pero no debería PID que se crearán cuando Bluepill inicia el proceso de trabajo con retraso?

actualización a ser un poco más clara acerca de este error, puedo ejecutar correctamente el comando manualmente, pero Bluepill no puede ejecutar el comando de arranque. Al ejecutar de forma manual, se ve así:

[email protected]:/srv/fsg_distro/current$ /usr/bin/env RAILS_ENV=production /usr/bin/ruby /srv/fsg_distro/current/script/delayed_job start 
delayed_job: process with pid 17564 started. 

cuando corro con Bluepill se ve así:

W, [2010-10-03T21:24:13.943136 #17326] WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read 
W, [2010-10-03T21:24:13.943391 #17326] WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read 
I, [2010-10-03T21:24:13.943811 #17326] INFO -- : [fsg_distro:delayed_job] Going from starting => down 
W, [2010-10-03T21:24:14.945274 #17326] WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read 
W, [2010-10-03T21:24:14.945495 #17326] WARN -- : [fsg_distro:delayed_job] pid_file /srv/fsg_distro/shared/pids/delayed_job.pid does not exist or cannot be read 
W, [2010-10-03T21:24:14.945826 #17326] WARN -- : [fsg_distro:delayed_job] Executing start command: /usr/bin/env RAILS_ENV=production /usr/bin/ruby /srv/fsg_distro/current/script/delayed_job start 
W, [2010-10-03T21:24:15.049261 #17326] WARN -- : [fsg_distro:delayed_job] Start command execution returned non-zero exit code: 
W, [2010-10-03T21:24:15.049491 #17326] WARN -- : [fsg_distro:delayed_job] {:stderr=>"", :exit_code=>1, :stdout=>""} 
I, [2010-10-03T21:24:15.049947 #17326] INFO -- : [fsg_distro:delayed_job] Going from down => starting 

Mi pastilla se ve así:

APP_ROOT='/srv/fsg_distro' 
RAILS_ROOT='/srv/fsg_distro/current' 
RAILS_ENV='production' 
RUBY_EXEC='/usr/bin/ruby' 

Bluepill.application("fsg_distro", :log_file => "/srv/fsg_distro/shared/log/bluepill.log") do |app| 
    app.process("delayed_job") do |process| 
    process.working_dir = RAILS_ROOT 

    process.start_grace_time = 30.seconds 
    process.stop_grace_time  = 30.seconds 
    process.restart_grace_time = 30.seconds 

    process.start_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} #{RUBY_EXEC} #{RAILS_ROOT}/script/delayed_job start" 
    process.stop_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} #{RUBY_EXEC} #{RAILS_ROOT}/script/delayed_job stop" 

    process.pid_file = "#{APP_ROOT}/shared/pids/delayed_job.pid" 
    process.uid = "deploy" 
    process.gid = "deploy" 
    end 
end 

Y mi secuencia de comandos de trabajo retrasada se ve así:

#!/usr/bin/env ruby 
ENV['RAILS_ENV'] ||= 'production' 

require File.dirname(__FILE__) + '/../config/environment' 
require 'delayed/command' 
Delayed::Command.new(ARGV).daemonize 
+1

2 preguntas viendo cómo esto todavía no ha sido respondido. ¿Qué permiso necesitarías escribir en la carpeta/srv/fsg_distro/shared/pids/y los rieles de usuario (de la máquina george?) ¿Tienen esos permisos? – Hugo

+0

Bluepill y yo, registrados, somos el mismo usuario ... Siempre que el usuario sea el propietario o el grupo, puede escribir en el directorio pids – Tony

Respuesta

1

No tengo respuesta, pero exactamente la misma pregunta. He intentado muchas, muchas soluciones, incluida la creación de un script de inicio para init.d y la invocación desde bluepill, como se describe en otra publicación basada en monit (http://stackoverflow.com/questions/1226302/how-to-monitor -layed-job-with-monit), pero nada ha funcionado. Siempre hay un problema de permisos con el archivo PID. ¿Cómo podría ser este el caso cuando se ejecuta como su?

Tengo el código y lo comparto con el grupo www. ¿Necesito crear un usuario personalizado solo para ejecutar bluepill? Si es así, ¿con qué configuración?

2

Si daemonize delayed_job (que son), entonces usted debe generar un archivo pid para usted mismo, o conseguir delayed_job que lo haga por usted, entonces bluepill espera encontrar el archivo pid vez grace_start_time ha pasado.

Si ejecuta demoyed_job en primer plano, y le dice a bluepill que daemonize el proceso para usted, bluepill generará el archivo pid.

No puede supervisar un proceso de autodaterización y hacer que bluepill cree un archivo pid. Es uno o el otro.

Cuestiones relacionadas