यह का सार है:
- यदि प्रोग्राम अभी भी चल रहा है और लटका नहीं पता लगाने के लिए की जरूरत है।
- यदि प्रोग्राम नहीं चल रहा है या लटका हुआ है तो आपको कार्यक्रम शुरू करने की आवश्यकता है।
अलग अलग तरीकों की एक संख्या # 1 करने के लिए कर रहे हैं, लेकिन दो जो मन में आ रहे हैं:
एक UNIX डोमेन सॉकेट पर सुनकर, स्थिति अनुरोधों को हैंडल करने। एक बाहरी आवेदन तब पूछताछ कर सकता है कि एप्लिकेशन अभी भी ठीक है या नहीं। अगर इसे कुछ समय अवधि के भीतर कोई प्रतिक्रिया नहीं मिलती है, तो यह माना जा सकता है कि पूछे जाने वाले आवेदन को मृतक किया गया है या मृत है।
समय-समय पर पूर्व निर्धारित पथ वाली फ़ाइल को स्पर्श करना। एक बाहरी एप्लिकेशन फ़ाइल के लिए टाइमस्टैम्प देख सकता है, और यदि यह पुराना है, तो यह मान सकता है कि एप्लाइज़ेशन मर चुका है या डेडलाक्ड है।
# 2 के संबंध में, पिछले पीआईडी को मारना और नई प्रक्रिया लॉन्च करने के लिए कांटा + निष्पादन का उपयोग करना सामान्य है। आप अपने आवेदन को बनाने पर भी विचार कर सकते हैं जो एक बार चलने वाले एप्लिकेशन में "निरंतर" चलता है, लेकिन उसके बाद "क्रॉन" या कुछ अन्य एप्लिकेशन का उपयोग उस एकल-रन एप्लिकेशन को लगातार चालू करने के लिए करें।
दुर्भाग्यवश, वॉचडॉग टाइमर और डेडलॉक से बाहर निकलना गैर-मामूली समस्याएं हैं। मुझे ऐसा करने के किसी भी सामान्य तरीके से नहीं पता, और जो कुछ मैंने देखा है वे बहुत बदसूरत हैं और 100% बग-फ्री नहीं हैं। हालांकि, tsan स्थैतिक विश्लेषण के साथ संभावित डेडलॉक परिदृश्यों और अन्य थ्रेडिंग समस्याओं का पता लगाने में मदद कर सकता है।
स्रोत
2011-09-11 06:07:23
किसी भी शुरू करने के लिए बॉक्स डेमॉन से बाहर डेमॉन देख सकते हैं और उन्हें पुन: प्रारंभ करने haha कर सकते हैं चलाने के लिए इस स्क्रिप्ट? – user623879
कई एम्बेडेड प्लेटफार्मों पर आप अपने वॉचडॉग डिमन को हार्डवेयर वॉचडॉग प्रोडक्ट कर सकते हैं, यह सुनिश्चित करना कि वॉचडॉग मर नहीं जाता है – Hasturkun
मैं अपने आवेदन को समायोजित करने के सुझाव को दूसरा करना चाहता हूं ताकि यह केवल एक बार चलता है, और फिर उस सिंगल- बार-बार आवेदन चलाएं। " यदि यह संभव है, तो यह पहचान प्रक्रिया को काफी सरल बना देगा। –