2012-11-12 15 views
9

हमारे पास समान हार्डवेयर और सॉफ्टवेयर चलाने वाले लगभग 40 कंप्यूटर हैं। वे सभी उबंटू 11.10 चलाते हैं। उनके पास लॉग इन करने के लिए केवल एक उपयोगकर्ता खाता है। एक प्रोफाइल प्रक्रिया लॉन्च करने के लिए .profile फ़ाइल सेट अप की गई है। डेमॉन के लिए कोड सीSIGHUP उत्पन्न होने का कारण क्या हो सकता है?

कुछ हफ्तों में, हमें एक रिपोर्ट मिलती है कि डिमन अब नहीं चल रहा है। यह सभी कंप्यूटरों पर नहीं होता है बल्कि सिर्फ एक या दो होता है। हम लगातार समस्या को पुन: पेश नहीं कर सकते हैं।

कोड को देखते हुए, एप्लिकेशन को छोड़कर जब यह या तो SIGHUP या SIGTERM प्राप्त करता है।

जैसा कि मैं समझता हूं, उपयोगकर्ता द्वारा लॉग ऑन होने पर SIGHUP उत्पन्न होता है। हमारे मामले में, उपयोगकर्ता कभी लॉग ऑफ नहीं करता है। मैं सोच रहा हूं कि क्या यह संभव है कि किसी अन्य कारण से SIGHUP उत्पन्न हो सके। किसी भी अन्य विचार की सराहना की जाएगी।

+0

क्या आपने डेमॉन पर लॉग इन करने का प्रयास किया है ताकि यह देखने के लिए कि 2 सिग्नल कौन से हैं? यदि नियंत्रण टर्मिनल बंद है, तो SIGHUP ट्रिगर किया जा रहा है, लेकिन यदि आप सर्वर का निर्माण कर रहे हैं और केवल 1 मुख्य टर्म कनेक्शन का उपयोग कर रहे हैं, तो मुझे लगता है कि अंतर –

+0

संकेतों को मैन्युअल रूप से भेजा जा सकता है। कौन जानता है? – arkascha

उत्तर

7

सिग्नल kill उपयोगिता या सिस्कोल को मारकर भेजा जा सकता है। बेशक, आप कोशिश कर सकते हैं कि कौन सी सिग्नल भेज रहा है या आपके टर्मिनलों या नेटवर्क कनेक्शन को डिस्कनेक्ट कर रहा है, लेकिन आपकी समस्या को ठीक करने के लिए सरल व्यावहारिक तरीका है।

जब कोड को डिमन के रूप में चलाने के लिए माना जाता है, लेकिन वास्तव में नहीं है (बस आपके जैसा), वहां एक रैपर है जो किसी भी प्रोग्राम को डिमन में बदल सकता है। आश्चर्य - इस रैपर को daemon कहा जाता है! इसमें बहुत सारे विकल्प हैं, संभवतः आपके लिए सबसे महत्वपूर्ण, आपके उपयोगिता को स्वचालित रूप से पुनरारंभ करने का विकल्प किसी भी कारण से कभी मरना चाहिए।

यदि यह आदेश आपके उबंटू पर स्थापित नहीं है, तो sudo apt-get install daemon, और man daemon प्रारंभ करने के लिए।

+1

और 'डेमन (3) 'लाइब्रेरी फ़ंक्शन भी है। –

+0

आपकी मदद के लिए धन्यवाद। कोड को डिमन के रूप में चलाने के लिए लिखा गया है (कांटा, सेटिड आदि का उपयोग करके)। हालांकि, मैं बाहरी डेमॉन उपकरण को भी देखूंगा। – Peter

11

अच्छी तरह से SIGHUP के बारे में कुछ बातें ध्यान देने योग्य हैं। सबसे पहले यह मूल एक हैंगअप की अवधारणा से है, यानी मॉडेम की तरह किसी कंसोल से कनेक्शन का नुकसान। आधुनिक प्रवृत्ति में इसका आम तौर पर मतलब है कि यह खो गया है यह नियंत्रित tty है। जब तक आप अपने टीटी से अलग होने की देखभाल नहीं करते हैं, तब तक किसी दिए गए टर्मिनल में शुरू होने वाले किसी भी प्रोग्राम को टर्मिनल बंद होने पर एक SIGHUP प्राप्त होगा। अपने कार्यक्रम में इसे कैसे करें इस पर विवरण के लिए here देखें। अन्य विकल्पों में शामिल हैं:

  • 'स्क्रीन' अंदर 'अपने कार्यक्रम चलाने' या '' 'tmux'
  • साथ '' nohup '' या कुछ अन्य daemonising ढांचे

अन्य अपने कार्यक्रम चलाने संभावना है कि कुछ जानबूझ कर आपकी प्रक्रिया को एक साइडअप भेज रहा है जो "परंपरा" द्वारा अक्सर एक प्रक्रिया को सिग्नल करने के लिए प्रयोग किया जाता है जिसे इसे कॉन्फ़िगरेशन को फिर से पढ़ना चाहिए।