2013-07-11 5 views
5

के गलत पीआईडी ​​को ट्रैक करना अपस्टार्ट मेरे देरी_job प्रक्रियाओं की निगरानी के लिए मेरे पास ब्लूपिल सेटअप है।ब्लूपिल

उबंटू 12.04 का उपयोग करना।

मैं उबंटू के upstart का उपयोग करके ब्लूपिल सेवा को शुरू और निगरानी कर रहा हूं। मेरा अपस्टार्ट कॉन्फ़िगरेशन नीचे है (/etc/init/bluepill.conf)।

description "Start up the bluepill service" 

start on runlevel [2] 
stop on runlevel [016] 

expect fork 
exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill 

# Restart the process if it dies with a signal 
# or exit code not given by the 'normal exit' stanza. 
respawn 

मैं भी expect daemon बजाय expect fork साथ की कोशिश की है। मैंने पूरी तरह से expect... लाइन को हटाने का भी प्रयास किया है।

मशीन बूट होने पर, ब्लूपिल ठीक शुरू होता है।

$ ps aux | grep blue 
root  1154 0.6 0.8 206416 17372 ?  Sl 21:19 0:00 bluepilld: <app_name> 

bluepill प्रक्रिया के पीआईडी ​​1154 यहाँ है। लेकिन upstart गलत पीआईडी ​​को ट्रैक कर रहा है।

$ initctl status bluepill 
bluepill start/running, process 990 

यह अगर मैं जबरदस्ती kill -9 का उपयोग कर bluepill मारने respawned होने से bluepill प्रक्रिया रोक रहा है।

इसके अलावा, मुझे लगता है कि गलत पीआईडी ​​ट्रैक किए जाने के कारण, रीबूट/शटडाउन बस लटकता है और मुझे हर बार मशीन को रीसेट करना पड़ता है।

यहां समस्या क्या हो सकती है?

उत्तर

0

स्पष्ट रूप से, अपस्टार्ट गलत पीआईडी ​​ट्रैक करता है। ब्लूपिल स्रोत कोड को देखने से, यह डिमन्स मणि को डिमोनिज़ करने के लिए उपयोग करता है, जो बदले में दो बार फोर्क करता है। तो expect daemon अपस्टार्ट कॉन्फ़िगरेशन में सही पीआईडी ​​को ट्रैक करना चाहिए - लेकिन आप पहले से ही कोशिश कर चुके हैं।

यदि यह आप के लिए संभव है, आप अग्रभूमि में bluepill चलाना चाहिए, और अपने नवोदय config में किसी भी expect छंद का उपयोग नहीं।

bluepill प्रलेखन से:

Bluepill.application("app_name", :foreground => true) do |app| 
    # ... 
end 

bluepill अग्रभूमि में चलेंगे।