"कर्नेल रिंग बफर", "उपयोगकर्ता स्तर", "लॉग स्तर" की अवधारणाएं क्या हैं?


35

मैंने अक्सर "कर्नेल रिंग बफर", "उपयोगकर्ता स्तर", "लॉग स्तर" और कुछ अन्य शब्द एक साथ दिखाई दिए। जैसे

/ var / log / dmesg कर्नेल रिंग बफर जानकारी समाहित करता है।

/var/log/kern.log में किसी भी लॉजेल के कर्नेल के संदेश शामिल हैं

/var/log/user.log सभी उपयोगकर्ता स्तर लॉग के बारे में जानकारी रखता है

क्या वे सभी लॉग के बारे में हैं? वे कैसे संबंधित और अलग हैं?

"स्तर" से, मैं कई स्तरों की पदानुक्रम की कल्पना करूँगा?

क्या "उपयोगकर्ता स्तर" "उपयोगकर्ता स्थान" से संबंधित है?

क्या वे रनवे या प्रोटेक्शन रिंग से संबंधित हैं ?

जवाबों:


41

हां, यह सब लॉगिंग के साथ करना है। नहीं, इसमें से किसी को रनवे या "प्रोटेक्शन रिंग" से कोई लेना-देना नहीं है।

कर्नेल एक रिंग बफर में अपने लॉग रखता है। इसका मुख्य कारण यह है कि सिस्टम स्टार्टअप से लॉग तब तक सहेजे जाते हैं जब तक कि साइसलॉग डेमन को शुरू करने और उन्हें इकट्ठा करने का मौका नहीं मिल जाता। अन्यथा सिसलॉग डेमॉन के स्टार्टअप से पहले किसी भी लॉग का कोई रिकॉर्ड नहीं होगा। उस रिंग बफर की सामग्री को dmesgकमांड का उपयोग करते हुए किसी भी समय देखा जा सकता है , और इसकी सामग्री को भी बचाया जा सकता /var/log/dmesgहै जैसे कि सिसोगल डेमॉन शुरू हो रहा है।

सभी लॉग जो कर्नेल से नहीं आते हैं, उन्हें भेजा जाता है क्योंकि वे सिसलॉग डेमॉन में उत्पन्न होते हैं, इसलिए उन्हें किसी बफ़र्स में नहीं रखा जाता है। कर्नेल लॉग भी उत्पन्न होने के कारण सिसलॉग डेमॉन द्वारा उठाए जाते हैं, लेकिन वे रिंग बफर को सहेजे (अनावश्यक रूप से, यकीनन) भी जारी रखते हैं।

लॉग स्तर को syslog (3) मैनपेज में प्रलेखित देखा जा सकता है और निम्नानुसार हैं:

  • LOG_EMERG : सिस्टम अनुपयोगी है
  • LOG_ALERT : कार्रवाई तुरंत होनी चाहिए
  • LOG_CRIT : महत्वपूर्ण स्थितियाँ
  • LOG_ERR : त्रुटि की स्थिति
  • LOG_WARNING : चेतावनी की स्थिति
  • LOG_NOTICE : सामान्य, लेकिन महत्वपूर्ण, स्थिति
  • LOG_INFO : सूचनात्मक संदेश
  • LOG_DEBUG : डिबग-स्तरीय संदेश

प्रत्येक स्तर को पिछले एक की तुलना में कम "महत्वपूर्ण" होने के लिए डिज़ाइन किया गया है। एक लॉग फ़ाइल जो एक स्तर पर लॉग रिकॉर्ड करती है वह सभी अधिक महत्वपूर्ण स्तरों पर भी लॉग रिकॉर्ड करेगी।

( /var/log/kern.logऔर /var/log/mail.logउदाहरण के लिए) का अंतर स्तर के साथ नहीं है, बल्कि सुविधा, या श्रेणी के साथ है। श्रेणियां भी मैनपेज पर दर्ज़ हैं।


धन्यवाद। (1) "यूजर लेवल" "यूजर स्पेस" से संबंधित है? (२) आपने जो कहा, उसमें /var/log/kern.logऔर /var/log/dmesgकर्नेल संदेशों के समान सामग्री होनी चाहिए? लेकिन उनकी सामग्री समान नहीं है।
टिम

"उपयोगकर्ता स्तर" एक बात नहीं है, जहाँ तक मुझे पता है। एक syslog स्तर है, जो एक syslog संदेश का "महत्व" स्तर है (मैंने स्तरों को सूचीबद्ध किया है), और इसका उपयोगकर्ता स्थान बनाम कर्नेल स्थान से कोई लेना-देना नहीं है। बूट समय से सामग्री (शायद अलग स्वरूपित) /var/log/kern.logहोनी चाहिए dmesg। जब तक कि यह बूट होने में एक लंबा समय नहीं रहा है और उन सामग्रियों को बाहर घुमाया गया है।
सेलडा

मेरा दूसरा प्रश्न है: dmesgकर्नेल रिंग बफर के वर्तमान मूल्यों को प्रिंट करते समय , बफर के पिछले / पुराने मूल्यों को संग्रहीत किया जाता है /var/log/dmesg। इसलिए dmesgआउटपुट /var/log/dmesgसामग्री का हाल ही का सबसेट है, और वे अलग हैं। तब की सामग्री /var/log/dmesg( dmesgआपकी टिप्पणी के अनुसार नहीं) और /var/log/kernel.logसमान हैं?
टिम

कब निर्भर करता है! बूट के तुरंत बाद, /var/log/dmesgसामग्री संभवतः के अंत के पास होगी /var/log/kern.log। बहुत बाद में, यह वहाँ नहीं होगा, इसे बाहर घुमाया जाएगा। सामान्य तौर पर, /var/log/kern.logऐसे लॉग होंगे जो कर्नेल के लॉग रिंग बफर के किसी भी दिए गए स्नैपशॉट से पुराने हैं और ऐसे लॉग भी हैं जो स्नैपशॉट से नए हैं।
सेलडा


17

आपके प्रश्न के कम से कम पहले भाग का उत्तर देने के लिए dmesg:

/var/log/dmesg 'कर्नेल रिंग बफर' की सामग्री को स्टोर करता है, एक मेमोरी बफर जिसे बूट पर कर्नेल द्वारा बनाया जाता है जिसमें लॉग डेटा संग्रहीत करने के लिए जैसे ही आप बूटलोडर चरण से बाहर निकलते हैं।

एक रिंग बफर एक विशेष प्रकार का बफर है जो हमेशा एक स्थिर आकार होता है, जब नए संदेश आते हैं तो सबसे पुराने संदेशों को हटा देता है। कर्नेल रिंग बफर में संग्रहीत पाठ वह है जो आपको पिछले स्क्रीन पर चमकता हुआ दिखाई देता है जब आप पहली बार एक यूनिक्स को बूट करते हैं। कंसोल मोड में मशीन की तरह (कोई छप स्क्रीन, प्लायमाउथ)। कर्नेल लॉग को मेमोरी बफर में संग्रहीत किया जाता है ताकि बूट लॉग कहीं न कहीं हो, जब तक कि सिस्टम ने उस बिंदु पर बूटस्ट्रैप किया हो जहां syslogडेमॉन ले सकता है।

dmesgलिनक्स के अंतर्गत util-linuxkernel.org द्वारा प्रकाशित सिस्टम मेंटेनेंस टूल्स के आवश्यक पैकेज का एक हिस्सा है । dmesg(1)मैन पेज के अनुसार ,

dmesg का उपयोग कर्नेल रिंग बफर की जांच या नियंत्रण के लिए किया जाता है।

देखें: http://www.computerhope.com/unix/dmesg.htm

'Systemd' init के तहत, इस कमांड का उपयोग कर्नेल रिंग बफर को प्रिंट करने के लिए किया जा सकता है:
# journalctl --dmesg or journalctl -kthxs for reform @don_crissti

dmesg | grep -i ethernet उदाहरण के लिए कमांड जारी करना , स्ट्रिंग 'ईथरनेट' के लिए कर्नेल रिंग बफर को पार्स करेगा।

मुझे उम्मीद है कि यह आपकी जांच के पहले भाग के साथ कम से कम मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.