लिनक्स में 'कोर डंप' क्या है?
जब कोई प्रक्रिया अप्रत्याशित रूप से बाहर निकलती है, तो यह अक्सर आपके सिस्टम में 'कोर डंप' छोड़ देती है। इसके साथ एक प्रासंगिक संदेश भी शामिल है। एक कोर डिबगिंग टूल के रूप में कार्य करता है और मेमोरी की एक छवि है जिसमें डिबगिंग जानकारी भी शामिल है। यदि आप एक ऐसे उपयोगकर्ता हैं जो किसी प्रोग्राम को डिबग नहीं करना चाहते हैं, तो आप केवल कोर को हटा सकते हैं:
$ आर एम सारआप इसे बिना छुए भी छोड़ सकते हैं, क्योंकि अगर कोई नया कोर कभी फेंका जाता है तो पुराना कोर अधिलेखित हो जाता है। आप निम्न आदेश के साथ कोर डंपिंग को भी निष्क्रिय कर सकते हैं:
$ कमी -सी 0
हम मांग पर कोर डंप उत्पन्न कर सकते हैं (उदाहरण के लिए, डिबगर के माध्यम से) या उन्हें समाप्ति पर स्वचालित रूप से उत्पादित किया जा सकता है। प्रोग्राम के अचानक बाहर निकलने के परिणामस्वरूप कर्नेल कोर डंप की शुरुआत करता है। अतिरिक्त संचालन के लिए इन्हें किसी अन्य प्रोग्राम (जैसे सिस्टमड-कोरडम्प) में भेजा जा सकता है।
जैसा कि आमतौर पर होता है, बेहतर स्थिरता और समस्या निवारण के लिए डेटा एकत्र करने और डीबग डेटा से संवेदनशील जानकारी प्रकट करने के जोखिम के बीच एक समझौता होता है।
हम क्या कवर करेंगे?
इस लेख में, हम देखेंगे कि Ubuntu 20.04 OS पर कोर डंप का स्थान कैसे निर्धारित किया जाए। चलिए अब शुरू करते हैं।
एक कोर डंप उत्पन्न करना
आइए पहले देखें कि हम कोर डंप कैसे उत्पन्न कर सकते हैं। इसके लिए हम Linux Kill कमांड का इस्तेमाल करते हैं। सबसे पहले, एक प्रक्रिया का पीआईडी ढूंढें और फिर एक किल सिग्नल भेजें। उदाहरण के लिए, नींद की प्रक्रिया शुरू करते हैं और फिर इसे इसके पीआईडी से मार देते हैं:
$ नींद 500$ मारना -एस सिगट्रैप $ ( पकड़ नींद )
अब जबकि आपने सीखा है कि कोर डंप कैसे उत्पन्न किया जाता है, तो आप इसे अगले अनुभागों में उपयोग कर सकते हैं।
वे कहां जाते हैं?
कोर डंप फ़ाइल को डिफ़ॉल्ट रूप से core.pid नाम दिया गया है और इसे एप्लिकेशन की कार्यशील निर्देशिका में बनाया गया है। यहाँ, पीआईडी प्रोसेस आईडी है।
ulimit टूल से, आप वर्तमान शेल और इसके बाद आने वाले किसी भी शेल के लिए सिस्टम संसाधन सीमा को प्राप्त या बदल सकते हैं। मूल फ़ाइल आकार सीमा को सत्यापित या कॉन्फ़िगर करने के लिए, निम्न आदेश का उपयोग करें:
$ कमी -सीकोर फ़ाइल को परिसीमन या छोटा करने से बचने के लिए, सुनिश्चित करें कि सीमा विश्व स्तर पर 'असीमित' [1] पर सेट है। इसे /etc/security/limits.conf में निम्न पंक्ति जोड़कर किया जा सकता है:
रूट - कोर असीमित* - कोर असीमित
अब, बस लॉग आउट करें और अपने सत्र में लागू होने वाली सीमाओं के लिए वापस लॉग इन करें।
कोर डंप के स्थान को अनुकूलित करना
'Sysctl kernel.core_pattern' कमांड या '/proc/sys/kernel/core_pattern' आमतौर पर उस स्थान को सेट करने के लिए उपयोग किया जाता है जहां कोर डंप जाते हैं।
वर्तमान कोर पैटर्न के लिए सेटिंग देखने के लिए निम्न आदेश दर्ज करें:
$ बिल्ली / प्रोक / sys / गुठली / core_patternआमतौर पर, आपको यहां 'कोर' के रूप में सूचीबद्ध डिफ़ॉल्ट मान मिलेगा।
कोर डंप स्थान सेट करने के लिए '/ proc/sys/kernel/core_pattern' का उपयोग करना
'/ proc/sys/kernel/core_pattern' फ़ाइल [2] [3] का उपयोग करके अस्थायी रूप से कोर डंप को एक नए स्थान पर पुनर्निर्देशित करें, कहते हैं /tmp/dumps/core। अब, निम्न चरणों का पालन करें:
चरण 1 . सबसे पहले, कोर डंप को स्टोर करने के लिए एक डायरेक्टरी बनाएं:
$ mkdir -पी / टीएमपी / गंदी जगह / कोर /चरण 2 . इस निर्देशिका के लिए आवश्यक अनुमतियाँ दें:
$ chmod ए + एक्स / टीएमपी / गंदी जगह / कोर /चरण 3 . अब, अस्थायी रूप से कोर डंप पथ सेट करें:
$ गूंज '/tmp/डंप/कोर/कोर' | सुडो टी / प्रोक / sys / गुठली / core_patternदोबारा, विश्व स्तर पर असीमित को असीमित पर सेट करें।
यहाँ, हम फ़ाइल के नाम के साथ कुछ अन्य जानकारी जोड़ सकते हैं जैसा कि निम्नलिखित में दिखाया गया है:
$ गूंज '/tmp/डंप/कोर/core_%e.%p_%t' | सुडो टी / प्रोक / sys / गुठली / core_patternयहां उपयोग किए जाने वाले प्रत्येक पैरामीटर को निम्नानुसार परिभाषित किया जा सकता है:
% और: के लिए निष्पादन फ़ाइल नाम% पी: के लिए प्रक्रिया पहचान या पिड।
% टी: के लिए एक टाइमस्टैम्प जोड़ना
चरण 4 . अगला, हमें पिछली सेटिंग्स को स्थायी रूप से लागू करने के लिए '/etc/sysctl.conf' फ़ाइल को बदलना होगा। इस फ़ाइल को खोलें:
$ सुडो नैनो / आदि / sysctl.confअब, इस फ़ाइल में निम्न पंक्ति जोड़ें:
कर्नेल.कोर_पैटर्न = / टीएमपी / गंदी जगह / कोर / सारसाथ ही, इस पंक्ति के बजाय, आप इसे जोड़ सकते हैं:
कर्नेल.कोर_पैटर्न = '/tmp/डंप/कोर/core_%e.%p_%t'हमें बस इतना ही करना है। अब, एक कोर डंप जनरेट करें जैसा कि 'जनरेटिंग ए कोर डंप' सेक्शन में बताया गया है। इसके बाद हम चेक कर सकते हैं कि हमारी कोर फाइल जनरेट हुई है या नहीं:
$ रास -एल / टीएमपी / गंदी जगह / कोर /
कोर डंप स्थान सेट करने के लिए 'Sysctl' कमांड का उपयोग करना
जैसा कि पहले उल्लेख किया गया है, हम उसी उद्देश्य के लिए sysctl कमांड का भी उपयोग कर सकते हैं। आइए कोर डंप स्थान और कोर फ़ाइल का स्वरूप बदलें:
चरण 1 . एक नई निर्देशिका बनाएँ और आवश्यक अनुमतियाँ दें:
$ mkdir -पी / टीएमपी / mydumps$ chmod ए + आरडब्ल्यूएक्स / टीएमपी / mydumps
चरण 2 . अब, बस निम्नलिखित कमांड चलाएँ:
$ सुडो sysctl -में कर्नेल.कोर_पैटर्न = / टीएमपी / mydumps / सार_ % और। % पी_ % टी
चरण 3 . अब, फिर से कोर डंप उत्पन्न करें जैसा हमने पहले किया था। इसके बाद, जांचें कि कोर फ़ाइल उत्पन्न हुई है या नहीं:
$ रास -एल / टीएमपी / mydumps /
उबंटू सिस्टम पर, कोर डंप अक्सर एपपोर्ट को भेजे जाते हैं। Red Hat-आधारित सिस्टम के लिए, इसे स्वचालित बग रिपोर्टिंग टूल (ABRT) को अग्रेषित किया जा सकता है। प्रारंभ में, मुझे कोर डंप स्थान को कॉन्फ़िगर करने में समस्या का सामना करना पड़ रहा था, इसलिए मुझे Ubuntu 20.04 पर Apport को पूरी तरह से अक्षम करना पड़ा। शायद, Red Hat और अन्य के मामले में भी यही हो सकता है।
निष्कर्ष
इस लेख में, हमने देखा है कि हम Ubuntu 20.04 OS पर कोर डंप के स्थान को कैसे अनुकूलित कर सकते हैं। कोर डंप आपको यह पता लगाने में मदद कर सकता है कि क्या गलत है, लेकिन संवेदनशील डेटा लीक करने के लिए वे भयानक हैं। जब भी आवश्यक न हो, कोर डंप को अक्षम किया जाना चाहिए और केवल तभी सक्षम किया जाना चाहिए जब बिल्कुल आवश्यक हो। ऐसी स्थिति में, पुष्टि करें कि फ़ाइलें सुरक्षित रूप से संग्रहीत हैं ताकि सामान्य उपयोगकर्ता डेटा तक न पहुँच सकें। इसके अलावा, आपके निर्णय की परवाह किए बिना, आपको यह सुनिश्चित करने के लिए हमेशा अपने कॉन्फ़िगरेशन का परीक्षण करना चाहिए कि यह अपेक्षित रूप से संचालित होता है।
कोर डंप और डिफ़ॉल्ट कॉन्फ़िगरेशन को विभिन्न ऑपरेटिंग सिस्टम द्वारा अलग-अलग तरीके से नियंत्रित किया जाता है। हाल के दिनों में, अधिकांश लिनक्स सिस्टम सिस्टमड को अपना रहे हैं, जिससे कुछ मामूली नियम समायोजन हुए हैं। आपका सिस्टम कैसे कॉन्फ़िगर किया गया है इसके आधार पर, आपको कोर डंप की खोज करने की आवश्यकता हो सकती है।