2012-05-29 16 views
5

मैं upstart द्वारा पूरी तरह से इसे रोकने की आवश्यकता के बिना किसी प्रकार का रीलोड कमांड कैसे भेज सकता हूं?सेवा को अपस्टार्ट करने के लिए रीलोड कमांड भेजें

  • कार्यक्रमों है कि एक घटना
  • डेमॉन कि लंबे समय तक रहा हैं संभालने के लिए और कुछ और

डेमॉन आम तौर पर करने के लिए एक सेवा प्रदान करने के लिए एक बार चलाएँ:

+0

'अपस्टार्ट' के माध्यम से शुरू की गई सेवाएं या तो एक- समय प्रोग्राम जो घटनाओं को संभालने के लिए दौड़ते हैं या वे लंबे समय से चल रहे डेमॉन हैं। आमतौर पर कार्यक्रमों के इस प्रकार के लिए stdin/stdout/stderr मौजूद नहीं है - वे लॉग फ़ाइलों को लिखते हैं जब उन्हें समस्याओं की रिपोर्ट करने की आवश्यकता होती है, और विशिष्ट फ़ाइलों से इनपुट पढ़ते हैं। मैं उत्सुक हूं कि आप इस सामान्य प्रतिमान के आसपास काम करने की कोशिश क्यों कर रहे हैं - क्या _problem_ आप हल करने की कोशिश कर रहे हैं? – sarnold

+0

मैं एक node.js स्क्रिप्ट को अपस्टार्ट के माध्यम से एक डिमन के रूप में चलाता हूं, जिसे स्थायी रूप से चलाने की आवश्यकता होती है। कभी-कभी इस स्क्रिप्ट को पुनः लोड करने की आवश्यकता होती है। दुर्भाग्य से upsatrt 'रीलोड सर्वरcontrol' जैसे सिंटैक्स का समर्थन नहीं करता है। तो मैंने stdin का उपयोग करने के बारे में सोचा, क्योंकि मैं 'स्टॉप सर्वर कंट्रोल और सर्वर कंट्रोल कंट्रोल' के लिए स्क्रिप्ट को रोक नहीं सकता। – buschtoens

+0

'पुनः लोड सेवा' आपकी प्रक्रिया में 'SIGHUP' सिग्नल भेज देगा; 'SIGHUP' सिग्नल अक्सर डेमन्स द्वारा उनकी कॉन्फ़िगरेशन फ़ाइलों को दोबारा पढ़ने का अनुरोध करने के लिए उपयोग किया जाता है ... क्या यह आपके लिए काम करेगा? व्यवस्थापक के लिए आपके काम को अन्य सभी नौकरियों के समान प्रबंधित करना आसान होगा। – sarnold

उत्तर

9

upstart आम तौर पर प्रक्रियाओं के दो प्रकार का प्रबंधन करता है SIGHUP संकेत के लिए सिग्नल हैंडलर प्रदान करें, डिमन को फिर से पढ़ने और उनकी कॉन्फ़िगरेशन फ़ाइलों को फिर से पार्स करने के लिए पूछें। (SIGHUP एक हैंग-अप सिग्नल है, टर्मिनलों के लिए अधिक प्रासंगिक है जो टेलीफोन लाइनों या एसएसएच प्रोटोकॉल के रूप में आ सकते हैं और जा सकते हैं। टर्मिनल नहीं होने वाले प्रोग्रामों के लिए, उनके टर्मिनल को "लटका" करने का अर्थ नहीं है , सिस्टम प्रशासक कार्रवाई के अलावा डेमॉन के लिए इतना संकेत भेजा नहीं किया जाएगा।)

आप अपने कार्यक्रम को संशोधित इसके विन्यास को फिर से पढ़ने के लिए जब यह एक SIGHUP संकेत प्राप्त कर सकते हैं, तो आप मानक upstartreload service आदेश का उपयोग कर सकते हैं विन्यास फाइलों को फिर से लोड करने के लिए। (आप इस सिग्नल पर कुछ भी कर सकते हैं, लेकिन सिस्टम प्रशासक उम्मीद करते हैं कि इस सिग्नल पर कॉन्फ़िगरेशन फ़ाइलों को फिर से पढ़ना होगा - कुछ और करना भ्रमित और परेशान हो सकता है।)

+4

आप 'reload' कमांड के लिए एक अलग सिग्नल उत्सर्जित करने के लिए अपस्टार्ट स्क्रिप्ट को कॉन्फ़िगर भी कर सकते हैं। स्क्रिप्ट के भीतर ही बस 'रीलोड सिग्नल यूएसआर 2' घोषित करें या जो भी आपका ऐप अपेक्षा करता है। –

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