কার্নেল বুট লগ ভার্বোসিটি স্তর হ্রাস করুন


9

যখন আমার কার্নেল বুট হয়, দরকারী দরকারী গুরুত্বপূর্ণ তথ্য ছাড়াও, এটি প্রচুর ডিবাগিং তথ্য প্রিন্ট করে

....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000]   0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000]  [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000]  [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000]  [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL CBX3 01072009 AMI 10013)
....
kernel: [0.00000] Early memory node ranges
kernel: [0.00000]   node   0: [mem 0x00001000-0x0009cfff]
kernel: [0.00000]   node   0: [mem 0x00100000-0xcf414fff]
kernel: [0.00000]   node   0: [mem 0xcf41c000-0xcfdfcfff]
....
kernel: [0.00000] ACPI: Local APIC address 0xfee00000
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)

এবং আরও অনেক কিছু।

এটি কার্নেল বিকাশকারী / ডিবাগার ছাড়া অন্য কারও পক্ষে কীভাবে কার্যকর হতে পারে তা আমি দেখতে পাচ্ছি না।

আমি খুঁজে পেয়েছি, loglevel=5বুট প্যারামিটার হিসাবে ব্যবহার করে আমি এগুলি থেকে মুক্তি পেতে পারি । ডিবাগিং লগগুলি আর টার্মিনালে মুদ্রণ করা হয় না, তবে তারা এখনও dmesgএবং ভিতরে রয়েছে syslog

বিশ্বব্যাপী বুট লগ ভার্বোসিটি হ্রাস করা সম্ভব, যাতে এই অকেজো তথ্য দ্বারা dmesgএবং syslogপ্লাবিত না হয়?

আমি স্ব-সংকলিত কার্নেলটি ব্যবহার করছি 3.18

এসিপটেড সলিউশন

/etc/rsyslog.confআমার জন্য সমস্যাটি সমাধানের জন্য নিম্নলিখিত লাইনগুলি রেখে, সরে গেছে :

kern.debug   /dev/null
& ~

আপনি যে আসল সমস্যাগুলি সমাধান করার চেষ্টা করছেন তা কী? অনেক বড় লগফাইল? জিজ্ঞাসা করা থেকে যেহেতু আমি লগতে এই তথ্য থাকাতে কোন সমস্যা দেখছি যা সাধারণত মানুষ পড়ে না এবং যার আকার বৃদ্ধি তুচ্ছ।
হেনেস

@ হেনেস - সমস্যাটি হ'ল এটি syslogএবং dmesgঅকেজো ডিবাগিং লগগুলি প্লাবিত হয় এবং এর ফলে সত্যিকারের সতর্কতা এবং ত্রুটিগুলি উপেক্ষা করা সহজ হয়। এছাড়াও, dmesgএবং syslogমানুষের (যেমন প্রশাসক) দ্বারা পড়া উচিত। এটাই তাদের পুরো উদ্দেশ্য।
মার্টিন ভেজিটার

গুরুত্বপূর্ণ তথ্য বন্যার বিষয়ে উদ্বেগ একটি ভাল বিষয়।
হেনেস 13

1
আপনি সুপারসার স্ট্যাক-এক্সচেঞ্জ ওয়েবসাইটে এই প্রশ্নটির দ্বারা আগ্রহী হতে পারেন: কীভাবে কার্নেল বার্তাগুলি আমার কনসোলকে বন্যার হাতছাড়া করবে?
সন্ত্রস্ত

উত্তর:


5

সিসলগের জন্য আপনি নিম্নলিখিত লাইনটি যুক্ত করতে পারেন /etc/syslog.conf:

kern.info; kern.debug   /dev/null

এটি কার্নেল .info এবং .debug বার্তা বাতিল করবে (যা লগলিভেল = 5 দিয়ে বাতিল করা হয়)

এছাড়াও, নির্দিষ্ট লগলেভেলের সাথে বার্তা দেখানোর dmesgবিকল্পের সাথে ব্যবহার করা যেতে পারে -n


4

কিছু লগ প্রিন্টক () দ্বারা মুদ্রিত হয় যা আপনি এটি বন্ধ করতে পারেন নি। এবং কিছু pr_debug () দ্বারা মুদ্রিত হয় যা বন্ধ করা হতে পারে কার্নেলের কনফিগারেশনের উপর নির্ভর করে। Pr_debug () এর আচরণটি ডায়নামিক ডিবাগ বৈশিষ্ট্য দ্বারা নিয়ন্ত্রিত হয়। যদি CONFIG_DYNAMIC_DEBUG সেট করা থাকে, তবে সমস্ত pr_debug () কলগুলি প্রতি কলসাইটটিতে গতিশীলভাবে সক্ষম / অক্ষম করা যেতে পারে। গতিশীল ডিবাগের বিশদটি এখানে । তাহলে CONFIG_DYNAMIC_DEBUG সেট না করা হয়, কিন্তু ডিবাগ সোর্স ফাইল সংজ্ঞায়িত করা হয়, pr_debug () মত কাজ করে printk () । যদি উভয়ই সংজ্ঞায়িত না হয় তবে pr_debug কিছুই করবে না।

এখানে কার্নেলের সংজ্ঞাটি রয়েছে:

#include <linux/dynamic_debug.h>

/* If you are writing a driver, please use dev_dbg instead */
#if defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
    dynamic_pr_debug(fmt, ##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) \
    printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
    no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif

সুতরাং, আপনার কার্নেল কনফিগারেশনটি পরীক্ষা করে দেখুন এবং এই লগগুলি কোথা থেকে এসেছে। তারপরে আপনি কীভাবে এটি অক্ষম করবেন তা জানবেন।


এছাড়াও করতে ভুলবেন না echo 8 > /proc/sys/kernel/printk: stackoverflow.com/questions/28936199/...
সিরো Santilli冠状病毒审查六四事件法轮功

0

loglevelকেসিএল থেকে সেট স্থাপনের পাশাপাশি , আপনি kernel.printkসিসটেলটিকেও টুইঙ্ক করতে পারেন যাতে সর্বোচ্চ স্তরটি আপনি কী চান তা প্রতিফলিত করে এবং বুট জুড়ে অব্যাহত থাকে।

মন্তব্যে এই আরও স্পষ্টতা হিসাবে:

সমস্যাটি হ'ল, সিসলগ এবং ডেমসাগে অকেজো ডিবাগিং লগগুলি প্লাবিত হয় এবং এর ফলে প্রকৃত সতর্কতা এবং ত্রুটিগুলি উপেক্ষা করা সহজ হয়।

আমি পুনরায় বুট করারlogrotate পরে ফাইলগুলি সরানোর জন্য কেবল একটি ক্রোন জব ব্যবহার করব :

root ~ $ crontab -l
@reboot /usr/sbin/logrotate --force /root/rotate-boot-messages
@reboot /bin/dmesg -c

root ~ $ cat /root/rotate-boot-messages
"/var/log/dmesg" {
  copytruncate
  notifempty
  missingok
  dateext
}
"/var/log/syslog" {
  copytruncate
  notifempty
  missingok
  dateext
}

তারপরে আপনি সতেজ শুরু করছেন, তাই কথা বলার জন্য, লগগুলিতে সীমাবদ্ধ ডিবাগ ডেটা ফেলে।


আমি দুঃখিত, তবে পরামর্শটি logrotateবিন্দুটিকে পুরোপুরি মিস করে। আমার সমস্যাটি নয় যে আমার লগফিলগুলি খুব বড় এবং আমি ডিস্কের জায়গার বাইরে চলে যাচ্ছি। পরিবর্তে, সমস্যাটি হ'ল এই লগফাইলে ডিবাগিং তথ্য দরকারী তথ্যকে কম অ্যাক্সেসযোগ্য করে তোলে।
মার্টিন ভেজিটার

ঠিক। সমস্ত ক্রেপকে লগ থেকে সরানোর জন্য লোগ্রোটেট ব্যবহার করুন, যাতে বুটের পরে আপনার খালি লগ ফাইল থাকে, যাতে আপনি কী দেখতে গুরুত্বপূর্ণ তা দেখতে পারেন। আমার লোগ্রোটেটের এখানে ব্যবহার প্রচলিত নয়: আপনি চাইলে এমভি ব্যবহার করুন। পয়েন্টটি হ'ল ব্রেস্টগুলি যত তাড়াতাড়ি সম্ভব বুথ থেকে বেরিয়ে আসা।
বিশপ

আপনি যদি না বোঝেন তবে এই বার্তাগুলি অস্পষ্ট বুট সময় সমস্যাগুলি বোঝায়? কোন ক্ষেত্রে, গৃহীত সমাধানটি আদর্শ মনে হয়।
বিশপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.