मैंने मूल रूप से StackOverflow पर यह प्रश्न पूछा था। तब एहसास हुआ कि यह शायद एक बेहतर जगह है।
मेरी विलंबित प्रक्रिया को मॉनिटर करने के लिए मेरे पास ब्लूपिल सेटअप है। (रेल आवेदन पर रूबी)
Ubuntu 12.10 का उपयोग करना।
मैं उबंटू के उपयोग से स्वयं ब्लूपिल सेवा की शुरुआत और निगरानी कर रहा हूं upstart
। मेरा अपस्टार्ट कॉन्फिगरेशन नीचे है ( /etc/init/bluepill.conf
)।
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
expect daemon
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 fork
इसके बजाय कोशिश की है expect daemon
। मैंने expect...
पूरी तरह से लाइन को हटाने की कोशिश भी की है ।
जब मशीन बूट करती है, तो ब्लूपिल ठीक शुरू होता है।
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
ब्लूपिल प्रक्रिया का पीआईडी यहां 1154 है। लेकिन upstart
लगता है कि गलत PID को ट्रैक कर रहा है। यह एक पीआईडी पर नज़र रख रहा है जो मौजूद नहीं है।
$ initctl status bluepill
bluepill start/running, process 990
मुझे लगता है कि यह उस sudo
प्रक्रिया के पीआईडी को ट्रैक कर रहा है जिसने ब्लूपील प्रक्रिया शुरू की थी।
अगर मैं जबरदस्ती ब्लूपिल का उपयोग कर रहा हूं, तो यह ब्लूपिल प्रक्रिया को सांस लेने से रोक रहा है kill -9
।
इसके अलावा, मुझे लगता है कि गलत PID के ट्रैक होने के कारण, रिबूट / शटडाउन बस हैंग हो जाता है और मुझे हर बार मशीन को हार्ड रीसेट करना पड़ता है।
यहां क्या मुद्दा हो सकता है?
अद्यतन :
यह समस्या उबंटू 14.04.2 को आज (3 मई 2015) तक बनी हुई है।
समस्या सूडो का उपयोग करने के कारण नहीं है। मैं अब सूडो का उपयोग नहीं कर रहा हूं। मेरा अपडेट किया हुआ अपस्टार्ट कॉन्फिगर यह है:
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
expect daemon
script
shared_path=/home/deploy/websites/some_app/shared
bluepill load $shared_path/config/delayed_job.bluepill
end script
जब मशीन बूट करती है, तो प्रोग्राम ठीक हो जाता है। लेकिन ऊपर बताए गए गलत पीआईडी को अभी भी ट्रैक करता है।
टिप्पणियों में उल्लिखित वर्कअराउंड हैंगिंग समस्या को ठीक कर सकता है। मैं यह कोशिश नहीं की है, यद्यपि।
ps aux | grep 990
यह करना चाहिए लेकिनpstree 990
अधिक जानकारीपूर्ण हो सकता है।