Tôi đang sử dụng BluePill để quản lý các quy trình như công việc bị trì hoãn cho Rails. Trong nhật ký BluePill, tôi nhận được tin nhắn này:Thiếu tệp PID khi sử dụng trình quản lý quy trình để bắt đầu công việc bị trễ
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
Vì vậy, nó tuyên bố rằng một tập tin pid là mất tích, mà nó được, nhưng không nên rằng PID được tạo ra khi BluePill bắt đầu quá trình công việc hoãn?
Cập nhật Để rõ ràng hơn về lỗi này, tôi có thể chạy thành công lệnh thủ công nhưng Bluepill không chạy lệnh bắt đầu. Khi tôi chạy nó bằng tay, nó trông như thế này:
[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.
Khi tôi chạy nó với Bluepill nó trông như thế này:
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
viên thuốc của tôi trông như thế này:
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
Và tập lệnh lệnh trì hoãn của tôi trông giống như sau:
#!/usr/bin/env ruby
ENV['RAILS_ENV'] ||= 'production'
require File.dirname(__FILE__) + '/../config/environment'
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
2 câu hỏi nhìn thấy như thế nào điều này vẫn chưa được trả lời. Bạn sẽ cần phải có giấy phép gì để ghi vào thư mục/srv/fsg_distro/shared/pids/và đường dẫn người dùng (từ máy george?) Có các quyền đó không? – Hugo
Bluepill và tôi đăng nhập là cùng một người dùng .... Miễn là người dùng là chủ sở hữu hoặc trong nhóm, anh ấy có thể ghi vào thư mục pids – Tony