अवलोकन
लिनक्स सर्वर पर रैम (RAM) समाप्त होने की गंभीर स्थिति में कर्नेल का आउट-ऑफ-मेमोरी (OOM) किलर सबसे पहले किस प्रोसेस को समाप्त करेगा, इसका निर्णय OOM स्कोर के आधार पर होता है। इस व्यावहारिक गाइड में हम choom टूल का उपयोग करके इसी स्कोर को प्रबंधित करने की तकनीक सीखेंगे। यहां सक्रिय प्रोसेस के स्कोर की जांच, समाप्ति प्राथमिकता में बदलाव और महत्वपूर्ण सेवाओं को क्रैश होने से बचाने के सभी चरण सीधे टर्मिनल पर करके दिखाए गए हैं।
1. choom यूटिलिटी का परिचय और आवश्यक पैकेज सेटअप
सिस्टम में choom कमांड का परीक्षण करने और बैकग्राउंड प्रोसेस को ट्रैक करने के लिए सबसे पहले util-linux तथा procps पैकेज को इंस्टॉल या अपडेट कर लें।

यह कमांड कर्नेल के उस आंतरिक मान (oom_score_adj) को नियंत्रित करने की सुविधा देता है, जिसे OOM किलर प्रोसेस टर्मिनेशन के दौरान गणना में लेता है।
इसके सिंटैक्स और उपलब्ध फ़्लैग्स को समझने के लिए --help विकल्प का उपयोग करें।
⚙️ [मुख्य विकल्प]
-p, --pid : लक्षित प्रोसेस की विशिष्ट पहचान संख्या (PID) सेट करता है जिसका स्कोर देखना या बदलना हो।-n, --adjust : OOM किलर समायोजन मान (-1000 से 1000 तक) निर्धारित करता है।-h, --help : कमांड के उपयोग और सहायता से जुड़ी जानकारी प्रदर्शित करता है।-V, --version : स्थापित टूल का वर्शन विवरण दिखाता है।

2. रनिंग प्रोसेस का OOM स्कोर जांचना
परीक्षण के लिए एक सुरक्षित वातावरण तैयार करते हैं। इसके लिए 10 मिनट तक चलने वाली एक डमी बैकग्राउंड प्रोसेस शुरू करने हेतु sleep 600 & चलाएं।

अब pgrep की मदद से इस स्लीप प्रोसेस की PID निकाल कर TARGET_PID वैरिएबल में सुरक्षित करें और choom -p से इसका वर्तमान oom_score_adj मान चेक करें।
सामान्य रूप से शुरू की गई किसी भी प्रोसेस का डिफ़ॉल्ट मान 0 दिखाई देगा, जिसका अर्थ है कि इसे कोई विशेष वरीयता या छूट नहीं मिली है।

choom द्वारा दिखाए गए आंकड़े की पुष्टि सीधे कर्नेल स्तर पर करने के लिए /proc वर्चुअल फ़ाइल सिस्टम के भीतर oom_score_adj फ़ाइल पढ़ें।
फ़ाइल का आउटपुट भी सटीक रूप से 0 दिखाता है, जिससे यह सिद्ध होता है कि कर्नेल पैरामीटर और कमांड आउटपुट में पूर्ण तालमेल है।

3. choom के माध्यम से OOM प्राथमिकता मान संशोधित करना
सक्रिय प्रोसेस की किलिंग प्रायोरिटी बढ़ाने के लिए हम -n विकल्प के साथ 500 मान देते हुए sudo विशेषाधिकार के साथ choom निष्पादित करेंगे।
जब oom_score_adj को धनात्मक (positive) संख्या पर सेट किया जाता है, तो मेमोरी का संकट होने पर लिनक्स कर्नेल इस प्रोसेस को सबसे पहले समाप्त करने का प्रयास करता है।

संशोधित मान के प्रभावी होने की पुष्टि करने के लिए choom -p का पुनः उपयोग करें।
कंसोल पर अब पुराना मान 0 हटकर नया स्कोर 500 दिखाई देगा, जो यह दर्शाता है कि कर्नेल ने नए पैरामीटर को तुरंत लागू कर दिया है।

4. सुरक्षित मोड में प्रोसेस आरंभ करना और कार्यक्षेत्र की सफाई
डेटाबेस या वेब सर्वर जैसी महत्वपूर्ण सेवाओं को बूट के समय ही OOM किलर से पूर्ण सुरक्षा देने के लिए -1000 मान के साथ सीधे कमांड शुरू की जा सकती है।-1000 का मान सेट करने पर कर्नेल को सख्त निर्देश मिलता है कि रैम की अत्यधिक कमी होने पर भी इस प्रोसेस को किसी भी हालत में न मारा जाए।

इस नई प्रोसेस की PID को TARGET_PID में स्टोर करके choom -p से सत्यापित करें।
परिणाम में -1000 प्रदर्शित होता है, जो साबित करता है कि निष्पादन के क्षण से ही प्रोसेस OOM किलर से सुरक्षित हो चुकी है।

परीक्षण समाप्त होने के बाद पृष्ठभूमि में चल रहे डमी टास्क को बंद करने के लिए pkill -f 'sleep 600' || true चलाएं।
इससे सिस्टम रिसोर्स मुक्त हो जाएंगे और अनावश्यक रूप से कोई बैकग्राउंड प्रोसेस सक्रिय नहीं रहेगी।

इस प्रकार आपने choom यूटिलिटी का उपयोग करके OOM स्कोर को प्रबंधित करने और क्रिटिकल लिनक्स प्रोसेस को सुरक्षित रखने की संपूर्ण कार्यप्रणाली समझ ली है।
अपने प्रोडक्शन सर्वर की आवश्यकताओं के अनुसार प्रोसेस वरीयताएं तय करके आप मेमोरी की कमी में भी सर्वर को सुचारू और स्थिर रख सकते हैं।