up स्क्रिप्ट चलती है, शून्य के साथ बाहर निकलती है, और उसके अंदर का कार्य ऐसी निजी सेवा तक नहीं पहुँच पाता जो दो सेकंड बाद टर्मिनल से बिल्कुल ठीक काम करती है। सहज अनुमान समय है, और सामान्य सुधार स्लीप है, जो दौड़ को समझे बिना छिपा देता है। अधिक उपयोगी पाठ यह है कि “up” एक हुक का नाम है, तैयारी की गारंटी नहीं। यह तब सक्रिय होता है जब टनल डिवाइस कॉन्फ़िगर होता है, जो रूट, DNS और निश्चित रूप से टनल के पीछे के किसी भी एप्लिकेशन से पहले है।

शेल परीक्षण सफल हुआ क्योंकि वह सब कुछ स्थिर होने के बाद चला। हुक एक विशिष्ट क्षण पर चला।

स्टार्टअप क्रम में up कहाँ है

OpenVPN टनल डिवाइस को कॉन्फ़िगर करता है और फिर up हुक चलाता है। रूट इंस्टॉल करना बाद का चरण है, और उसका अपना हुक है, इसलिए up में रखा गया रूट-निर्भर कार्य उपयोगी मार्ग के बिना डिवाइस देख सकता है। रूट का काम route-up में रखें और समय की समस्या सामान्यतः गायब हो जाती है।

मैनुअल इस क्रम और हर हुक को मिलने वाले वातावरण का दस्तावेज़ीकरण करता है। यह क्रम पारंपरिक “मेरे शेल से काम करता है” रिपोर्ट की पूरी व्याख्या है, और यही कारण है कि एक ही स्क्रिप्ट एक मशीन पर पास हो सकती है और धीमे रूट चरण वाली दूसरी मशीन पर विफल हो सकती है। दोनों में से कोई परिणाम स्क्रिप्ट की गुणवत्ता के बारे में कुछ नहीं कहता।

DNS और एप्लिकेशन की तैयारी और भी बाद में आती है। स्थापित रूट भी इस बात का प्रमाण नहीं हैं कि दूर का सिरा सुन रहा है, कोई नाम हल हो रहा है, या उपयोगकर्ता-सीमित कार्य के लिए डेस्कटॉप सत्र मौजूद है।

हुक वास्तव में क्या विरासत में लेता है

हुक OpenVPN प्रक्रिया के खाते और वातावरण के अंतर्गत चलता है, जो आपके इंटरैक्टिव शेल के समान नहीं है। इसमें उपयोगकर्ता का सत्र बस, डेस्कटॉप वातावरण या ऐसा क्रेडेंशियल नहीं हो सकता जो केवल लॉगिन पर अनलॉक होता है। लिखिए कि कार्य को वास्तव में इनमें से क्या चाहिए।

यह उन कार्यों के लिए मायने रखता है जो नेटवर्किंग जैसे दिखते हैं पर उपयोगकर्ता संदर्भ पर निर्भर हैं: उपयोगकर्ता क्रेडेंशियल के साथ शेयर माउंट करना, प्रति-उपयोगकर्ता प्रॉक्सी सेट करना, या प्रिंटर कॉन्फ़िगर करना। विशेषाधिकार वाला टनल हुक उनके लिए गलत जगह है, और कितना भी इंतज़ार करने से गायब सत्र ठीक नहीं होता।

जब हुक में कोई कार्य विफल हो, तो खाता, वातावरण और विफल होने वाला पहला ऑपरेशन दर्ज करें। यह समय-पूर्वता को अनुमति या संदर्भ की समस्या से अलग करता है, और दोनों के उपचार पूरी तरह अलग हैं। उनके बीच अनुमान लगाना ही पाँच मिनट के सुधार को पूरी दोपहर बना देता है।

स्लीप जोड़ना तैयारी की जाँच क्यों नहीं है

स्लीप स्क्रिप्ट को देर करता है और दौड़ की खिड़की को खिसकाता है। तेज़ दिन में कार्य सफल होता है; धीमे दिन में वह फिर विफल होता है, और विफलता दोहराना कठिन हो जाता है क्योंकि देरी काम करती दिखती है। केवल हल्के भार में काम करने वाली देरी संयोग है, उपचार नहीं।

यदि निर्भरता रूट है, तो रूट इंस्टॉलेशन के अनुरूप हुक का उपयोग करें। यदि निर्भरता टनल के पीछे की सेवा है, तो सीमित जाँच का उपयोग करें जो उस विशिष्ट शर्त की प्रतीक्षा करती है और कभी न आने पर स्पष्ट रूप से विफल होती है।

विफलता को स्पष्ट रखें। जो हुक शून्य के साथ बाहर निकलता है जबकि उसका वास्तविक काम विफल रहा, वह विफल होने वाले हुक से बदतर है, क्योंकि सेवा प्रबंधक सफलता दर्ज करता है और फिर कोई नहीं देखता। स्क्रिप्ट से ही एक लॉग पंक्ति इसे ईमानदार रखने का सबसे सस्ता तरीका है।

सफ़ाई और पुनःकनेक्शन समान देखभाल के योग्य हैं

जो स्क्रिप्ट साझा स्थिति बदलती है उसे मेल खाता पूर्ववत करने का मार्ग चाहिए। हुक द्वारा जोड़े गए रूट, रिज़ॉल्वर प्रविष्टियाँ और फ़ायरवॉल चिह्न इडेम्पोटेंट और प्रतिवर्ती होने चाहिए, नहीं तो पुनःकनेक्शन पहले के ऊपर दूसरी प्रति ढेर कर देगा।

पुनःकनेक्शन पूर्ण सेवा शुरू होने की तुलना में हुक अधिक बार चला सकते हैं। जो स्थायी इंटरफ़ेस सत्र पुनःस्थापित करता है वह up और route-up चक्र फिर से चला सकता है, इसलिए हर बूट पर एक निष्पादन मानने वाली स्क्रिप्ट अंततः गलत व्यवहार करेगी। एक दिन के उछाल के दौरान लॉग में निष्पादन गिनें ताकि पता चले कि वह वास्तव में कितनी बार चलती है। फिर स्क्रिप्ट को इतनी बार चलाने के लिए सुरक्षित बनाएँ।

उस जीवनचक्र का परीक्षण करें जो विफल हुआ, बाद की किसी कमांड का नहीं। बूट या पुनःकनेक्शन को पुनःउत्पन्न करें, हुक को चलते देखें, और पुष्टि करें कि कार्य उसी क्षण सफल हुआ जब वह वास्तव में चलता है। बाद में इंटरैक्टिव शेल से मिली सफलता निर्भरता के बारे में साक्ष्य है, स्टार्टअप पथ के काम करने का प्रमाण नहीं।

उस घटना का नाम लें जिस पर हर कार्य निर्भर है, फिर उसे उस घटना से जोड़ें। बाकी सब जाँच होने का दिखावा करने वाली देरी है।

संबंधित लेख