2010-09-27 9 views
5

मैं रेल के लिए देरी नौकरी जैसी प्रक्रियाओं का प्रबंधन करने के लिए ब्लूपिल का उपयोग कर रहा हूं। BluePill लॉग में, मैं इस संदेश को हो रही है:देरी हुई नौकरी शुरू करने के लिए प्रक्रिया प्रबंधक का उपयोग करते समय पीआईडी ​​फ़ाइल गुम हो रही है

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 

तो यह दावा कर रहा है कि एक पीआईडी ​​फ़ाइल याद आ रही है, यह है जो, लेकिन वह बनाया जा पीआईडी ​​नहीं करना चाहिए जब BluePill विलंबित नौकरी की प्रक्रिया शुरू?

अद्यतन में थोड़ा और अधिक इस त्रुटि के बारे में स्पष्ट होना करने के लिए, मैं सफलतापूर्वक मैन्युअल आदेश चला सकते हैं, लेकिन Bluepill शुरू कमांड को चलाने के लिए विफल रहता है। जब मैं इसे मैन्युअल रूप से चलाने के लिए, यह इस तरह दिखता है:

[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. 

यह इस तरह दिखता है जब मैं यह Bluepill साथ चलाएँ:

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 

मेरे गोली इस तरह दिखता है:

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 

और मेरी देरी वाली जॉब स्क्रिप्ट इस तरह दिखती है:

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

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

2 प्रश्न यह देख रहे हैं कि यह अभी भी अनुत्तरित नहीं है। फ़ोल्डर/srv/fsg_distro/साझा/pids/को लिखने के लिए आपको किस अनुमति की आवश्यकता होगी और क्या उपयोगकर्ता रेल (मशीन जॉर्ज से?) में उन अनुमतियां हैं? – Hugo

+0

ब्लूपिल और मुझे लॉग इन किया गया एक ही उपयोगकर्ता है .... जब तक उपयोगकर्ता स्वामी या समूह में होता है, तो वह पिड्स निर्देशिका में लिख सकता है – Tony

उत्तर

1

मेरे पास कोई जवाब नहीं है, लेकिन बिल्कुल वही सवाल है। मैंने कई, कई समाधानों की कोशिश की है - init.d के लिए स्टार्टअप स्क्रिप्ट बनाने और ब्लूपिल से कॉल करना, जैसा कि किसी अन्य मोनिट-आधारित पोस्टिंग में वर्णित है (http://stackoverflow.com/questions/1226302/how-to-monitor -डिलेड-जॉब-साथ-मोनिट), लेकिन कुछ भी काम नहीं किया है। हमेशा पीआईडी ​​फ़ाइल के साथ एक अनुमति मुद्दा है। सु के रूप में चलते समय यह मामला कैसे हो सकता है?

मेरे पास कोड है, और इसे समूह www के साथ साझा करें। क्या मुझे ब्लूपील चलाने के लिए कस्टम उपयोगकर्ता बनाने की ज़रूरत है? यदि हां, तो किस सेटिंग्स के साथ?

2

daemonize delayed_job (जो आप कर रहे हैं) तो आप एक पीआईडी ​​फ़ाइल इसके लिए अपने आप को उत्पन्न करते हैं, या आप के लिए यह करने के लिए delayed_job प्राप्त करना चाहिए, तो bluepill पीआईडी ​​फ़ाइल एक बार grace_start_time बीत चुका है खोजने के लिए उम्मीद है आप तो।

यदि आप अग्रभूमि में देरी_बॉज चलाते हैं, और आप ब्लूपिल को आपके लिए प्रक्रिया को डिमननाइज़ करने के लिए कहते हैं, तो ब्लूपिल पिड फ़ाइल उत्पन्न करेगा।

आप दोनों स्वयं-डिमोनाइजिंग प्रक्रिया की निगरानी नहीं कर सकते हैं और ब्लूपिल को एक पिड फ़ाइल बना सकते हैं। यह या तो एक या दूसरे है।

संबंधित मुद्दे