स्टॉप अज्ञात उदाहरण के साथ अपस्टार्ट का उपयोग करना


8

मैं बस ऊपर जा रहा हूँ इसलिए मैंने एक बहुत ही मूल स्क्रिप्ट लिखी है जिसे लॉग फ़ाइल में प्रिंट करना vm-service.confहै /etc/init:

description "Virtual Images"
author      "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn   


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

अगर मैं चलाता हूं sudo start vm-service, तो यह आउटपुट:

vm-service start/running, process 29034

लेकिन, जब मैं चलता हूं sudo stop vm-service, तो यह आउटपुट:

stop: Unknown instance

मैंने चलाने की कोशिश की है sudo initctl reload-configuration, लेकिन मुझे अभी भी रोक पर त्रुटि मिलती है।

मैंने रसोई की किताब को देखा है, लेकिन मैं शायद कुछ स्पष्ट याद कर रहा हूं।

जवाबों:


7

यदि मुख्य प्रक्रिया (स्क्रिप्ट या निष्पादित स्टैन्ज़ निर्दिष्ट किए जाते हैं तो क्या होता है) से बाहर निकलने पर उपस्टार्ट नौकरी बंद कर देगा। Upstart तब पोस्ट-स्टार्ट प्रक्रिया को चलाएगा।

तो क्या हो रहा है पहली स्क्रिप्ट चल रही है और बाहर निकल रही है, उपस्टार्ट नौकरी बंद करने पर विचार कर रहा है, फिर दूसरी स्क्रिप्ट चल रही है और बाहर निकल रही है। यदि आप पहले से रुकी हुई नौकरी पर स्टॉप कमांड चलाते हैं, तो यह आपके द्वारा देखे गए संदेश को प्रिंट करता है।

इसे संभालने के लिए, पूर्व-प्रारंभ श्लोक का उपयोग करें:

pre-start exec foo --bar

post-start exec baz --foo

यदि आप ऐसा करते हैं, तो उपस्टार्ट पूर्व-प्रारंभ श्लोक के समाप्त होने के बाद नौकरी को देखेगा, और रुका हुआ नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.