النقاط الرئيسية
- يتيح لك الأمر dmesg مراجعة الرسائل المخزنة في مخزن الحلقة الخاص بنظام Linux، مما يوفر رؤى حول أخطاء الأجهزة ومشكلات بدء التشغيل.
- يمكنك تخصيص الأمر dmesg عن طريق إزالة الحاجة إلى sudo، وفرض إخراج الألوان، واستخدام الطوابع الزمنية القابلة للقراءة من قبل البشر، ومشاهدة الأحداث المباشرة، واسترداد الرسائل الأخيرة، والبحث عن مصطلحات معينة، والتصفية حسب مستويات السجل أو فئات المرافق.
ال dmesg يتيح لك الأمر إلقاء نظرة على العالم المخفي لعمليات بدء تشغيل Linux. قم بمراجعة ومراقبة رسائل الأجهزة وبرامج التشغيل من المخزن المؤقت الحلقي الخاص بالنواة باستخدام “صديق مكتشف الأخطاء”.
كيف يعمل Ring Buffer في Linux
في أجهزة الكمبيوتر التي تعمل بنظام Linux وأجهزة الكمبيوتر الشبيهة بنظام Unix، يعد التمهيد وبدء التشغيل مرحلتين متميزتين من تسلسل الأحداث التي تحدث عند تشغيل الكمبيوتر.
عمليات التمهيد (السير الذاتية أو UEFI, إم بي آر، و نكش) قم بأخذ تهيئة النظام إلى النقطة التي يتم فيها تحميل النواة في الذاكرة وتوصيلها بالقرص العشوائي الأولي (initrd أو initramfs)، و النظام تم البدء.
بعد ذلك، تتولى عمليات بدء التشغيل زمام الأمور وتستكمل تهيئة نظام التشغيل. في المراحل المبكرة جدًا من التهيئة، يتم تسجيل الشياطين مثل سيسلوجد أو rsyslogd لم يتم تشغيلها بعد. لتجنب فقدان رسائل الخطأ والتحذيرات الملحوظة من هذه المرحلة من التهيئة، تحتوي النواة على حلقة عازلة الذي يستخدمه كمخزن للرسائل.
المخزن المؤقت الحلقي هو مساحة ذاكرة مخصصة للرسائل. وهو بسيط في التصميم، وله حجم ثابت. وعندما يمتلئ، تحل الرسائل الأحدث محل الرسائل الأقدم. ومن الناحية النظرية، يمكن اعتباره “مخزن دائري“.”
يخزن مخزن الحلقة للنواة معلومات مثل رسائل تهيئة برامج تشغيل الأجهزة، والرسائل من الأجهزة، والرسائل من وحدات النواة. ولأنه يحتوي على رسائل بدء التشغيل منخفضة المستوى، فإن مخزن الحلقة يعد مكانًا جيدًا لبدء التحقيق في أخطاء الأجهزة أو مشكلات بدء التشغيل الأخرى.
وهنا يأتي دور الأمر dmesg.
ما هو الأمر dmesg؟
ال dmesg الأمر يسمح لك لمراجعة الرسائل المخزنة في المخزن المؤقت للحلقة. بشكل افتراضي، تحتاج إلى استخدام sudo للإستخدام dmesg.
sudo dmesg
يتم عرض كافة الرسائل الموجودة في المخزن المؤقت الحلقي في نافذة المحطة الطرفية.
كان ذلك طوفانًا. ومن الواضح أن ما نحتاج إلى القيام به هو نقله عبر الأنابيب less:
sudo dmesg | less
الآن يمكننا التمرير عبر الرسائل بحثًا عن العناصر التي تثير اهتمامنا.
يمكنك استخدام وظيفة البحث داخل less لتحديد العناصر والمصطلحات التي تهمك وتسليط الضوء عليها. ابدأ وظيفة البحث بالضغط على مفتاح الشرطة المائلة للأمام “/” في less.
إزالة الحاجة إلى sudo
إذا كنت تريد تجنب الاضطرار إلى استخدام sudo في كل مرة تستخدمها dmesgيمكنك استخدام هذا الأمر. ولكن انتبه: فهو يسمح لأي شخص لديه حساب مستخدم على جهاز الكمبيوتر الخاص بك باستخدام dmesg دون الحاجة إلى استخدام sudo.
sudo sysctl -w kernel.dmesg_restrict=0
فرض إخراج اللون
افتراضيا، dmesg من المحتمل أن يتم تكوينه لإنتاج مخرجات ملونة. إذا لم يكن الأمر كذلك، فيمكنك معرفة ذلك dmesg لتلوين مخرجاتها باستخدام -L خيار (اللون).
sudo dmesg -L
لإجبار dmesg للتعيين دائمًا على عرض ملون، استخدم هذا الأمر:
sudo dmesg --color=always
الطوابع الزمنية البشرية
افتراضيا، dmesg استخدم تدوين الطابع الزمني للثواني و نانوثانية منذ بدء تشغيل النواة. لتقديم هذا بتنسيق أكثر ملاءمة للإنسان، استخدم -H خيار (بشري).
sudo dmesg -H
وهذا يؤدي إلى حدوث أمرين.
- يتم عرض الإخراج تلقائيًا في
less. - تعرض الطوابع الزمنية طابعًا زمنيًا بالتاريخ والوقت، بدقة دقيقة. يتم تمييز الرسائل التي حدثت في كل دقيقة بالثواني والنانوثانية من بداية تلك الدقيقة.
الطوابع الزمنية القابلة للقراءة بواسطة الإنسان باستخدام dmesg
إذا كنت لا تحتاج إلى دقة النانو ثانية، ولكنك تريد طوابع زمنية أسهل في القراءة من الإعدادات الافتراضية، فاستخدم -T (خيار قابل للقراءة من قبل البشر). (إنه مربك بعض الشيء. -H هو الخيار “الإنساني” -T (هو خيار “قابل للقراءة من قبل البشر”).
sudo dmesg -T
يتم عرض الطوابع الزمنية كتواريخ وأوقات قياسية، ولكن الدقة يتم تخفيضها إلى دقيقة واحدة.
كل ما حدث خلال دقيقة واحدة له نفس الطابع الزمني. إذا كان كل ما يهمك هو تسلسل الأحداث، فهذا جيد بما فيه الكفاية. لاحظ أيضًا أنه يتم إرجاعك إلى موجه الأوامر. لا يستدعي هذا الخيار تلقائيًا less.
مشاهدة الأحداث المباشرة مع dmesg
لرؤية الرسائل عند وصولها إلى مخزن حلقة النواة، استخدم --follow خيار (انتظر الرسائل). قد تبدو هذه الجملة غريبة بعض الشيء. إذا تم استخدام المخزن المؤقت الحلقي لتخزين الرسائل من الأحداث التي تحدث أثناء تسلسل بدء التشغيل، فكيف يمكن للرسائل المباشرة أن تصل إلى المخزن المؤقت الحلقي بمجرد تشغيل الكمبيوتر؟
أي شيء يسبب تغييرًا في الأجهزة المتصلة بجهاز الكمبيوتر الخاص بك سيؤدي إلى إرسال رسائل إلى مخزن الحلقة للنواة. قم بتحديث وحدة نواة أو إضافتها، وسترى رسائل مخزن الحلقة حول هذه التغييرات. إذا قمت بتوصيل محرك أقراص USB أو توصيل جهاز Bluetooth أو فصله، فسترى رسائل في dmesg حتى الأجهزة الافتراضية قد تتسبب في ظهور رسائل جديدة في المخزن المؤقت الحلقي. قم بتشغيل جهاز افتراضي، وستشاهد معلومات جديدة تصل إلى المخزن المؤقت الحلقي.
sudo dmesg --follow
لاحظ أنه لن يتم إرجاعك إلى موجه الأوامر. عندما تظهر رسائل جديدة، يتم عرضها بواسطة dmesg في أسفل نافذة المحطة.
حتى تركيب قرص CD-ROM يُنظر إليه على أنه تغيير، لأنك قمت بتطعيم محتويات قرص CD-ROM على شجرة الدليل.
للخروج من موجز الوقت الحقيقي، اضغط على Ctrl+C.
استرجاع الرسائل العشرة الأخيرة
استخدم أمر الذيل لاسترجاع العشرة الاخيرة رسائل حلقة المخزن المؤقت للنواة. بالطبع، يمكنك استرداد أي عدد من الرسائل. عشرة رسائل هي مجرد مثال.
sudo dmesg | last -10
سيتم استرداد آخر عشر رسائل وإدراجها في نافذة المحطة الطرفية.
البحث عن مصطلحات محددة
قم بتوصيل الإخراج من dmesg خلال grepللبحث عن سلاسل أو أنماط معينة. هنا نستخدم -i خيار (تجاهل الحالة) بحيث يتم تجاهل حالة السلاسل المطابقة. ستتضمن نتائجنا “usb” و”USB” وأي تركيبة أخرى من الأحرف الصغيرة والكبيرة.
sudo dmesg | grep -i usb
نتائج البحث المميزة تكون بالأحرف الكبيرة والصغيرة.
يمكننا عزل الرسائل التي تحتوي على إشارات إلى الرسالة الأولى سكزي القرص الصلب على النظام sda. (في الحقيقة، sda ويستخدم أيضًا في الوقت الحاضر أول قرص صلب SATA، ولمحركات أقراص USB.)
sudo dmesg | grep -i sda
جميع الرسائل التي تذكر sda يتم استرجاعها وإدراجها في نافذة المحطة الطرفية.
لتصنع grep ابحث عن مصطلحات متعددة في وقت واحد، استخدم -E خيار (تمديد التعبير العادي). يجب عليك توفير مصطلحات البحث داخل سلسلة مقتبسة مع فواصل “|” بين مصطلحات البحث:
sudo dmesg | grep -E "memory|tty|dma"
يتم إدراج أي رسالة تذكر أيًا من مصطلحات البحث في نافذة المحطة الطرفية.
استخدام مستويات السجل
تحتوي كل رسالة مسجلة في مخزن حلقة النواة على مستوى مرتبط بها. يمثل المستوى أهمية المعلومات الموجودة في الرسالة. المستويات هي:
- طوارئ:النظام غير قابل للاستخدام.
- يُحذًِر:يجب اتخاذ الإجراء فورًا.
- نقد:حالات حرجة.
- خطأ:شروط الخطأ.
- تحذير:شروط التحذير.
- يلاحظ:حالة طبيعية ولكنها مهمة.
- معلومات:معلوماتية.
- تصحيح الأخطاء:رسائل مستوى التصحيح.
نحن نستطيع أن نصنع dmesg استخراج الرسائل التي تطابق مستوى معين باستخدام -l خيار (المستوى) وتمرير اسم المستوى كمعلمة لسطر الأوامر. لرؤية رسائل المستوى “الإعلامية” فقط، استخدم هذا الأمر:
sudo dmesg -l info
جميع الرسائل المدرجة هي رسائل إعلامية، ولا تحتوي على أخطاء أو تحذيرات، بل مجرد إشعارات مفيدة.
دمج مستويين أو أكثر من مستويات السجل في أمر واحد لاسترداد رسائل مستويات السجل المتعددة:
sudo dmesg -l debug,notice
الناتج من dmesg هو مزيج من رسائل كل مستوى سجل:
فئات المرافق
ال dmesg يتم تجميع الرسائل في فئات تسمى “المرافق”. قائمة المرافق هي:
- النواة:رسائل النواة.
- مستخدم:الرسائل على مستوى المستخدم.
- بريد:نظام البريد.
- شيطان:شياطين النظام.
- المصادقة:رسائل الأمان/الترخيص.
- سجل النظام:رسائل syslogd الداخلية.
- ل ب ر:نظام فرعي للطابعة الخطية.
- أخبار:نظام فرعي لأخبار الشبكة.
يمكننا أن نسأل dmesg لتصفية مخرجاتها لإظهار الرسائل في منشأة معينة فقط. للقيام بذلك، يجب علينا استخدام -f خيار (المنشأة):
sudo dmesg -f daemon
dmesg تسرد جميع الرسائل المتعلقة بالشياطين في نافذة المحطة الطرفية.
كما فعلنا مع المستويات، يمكننا أن نسأل dmesg لإدراج الرسائل من أكثر من منشأة في وقت واحد:
sudo dmesg -f syslog, daemon
المخرجات عبارة عن مزيج من رسائل سجل syslog وسجل daemon.
الجمع بين المرفق والمستوى
ال -x خيار (فك التشفير) يجعل dmesg إظهار المرفق والمستوى كبادئات قابلة للقراءة من قبل البشر لكل سطر.
sudo dmesg -x
يمكن رؤية المنشأة والمستوى في بداية كل سطر:
القسم المميز الأول عبارة عن رسالة من مرفق “kernel” بمستوى “notice”. والقسم المميز الثاني عبارة عن رسالة من مرفق “kernel” بمستوى “info”.
هذا رائع، ولكن لماذا؟
باختصار، إيجاد الأخطاء.
إذا كنت تواجه مشكلات تتعلق بعدم التعرف على جزء من الأجهزة أو عدم عمله بشكل صحيح، dmesg ربما يلقي بعض الضوء على هذه القضية.
- يستخدم
dmesgلمراجعة الرسائل من أعلى مستوى إلى كل مستوى أدنى، بحثًا عن أي أخطاء أو تحذيرات تشير إلى عنصر الأجهزة، أو قد يكون لها تأثير على المشكلة. - يستخدم
dmesgالبحث عن أي ذكر للمرفق المناسب لمعرفة ما إذا كان يحتوي على أي معلومات مفيدة. - ماسورة
dmesgخلالgrepوابحث عن سلاسل أو معرفات ذات صلة مثل الشركة المصنعة للمنتج أو أرقام الطراز. - ماسورة
dmesgخلالgrepوابحث عن مصطلحات عامة مثل “gpu” أو “storage”، أو مصطلحات مثل “failing” أو “failed” أو “unable”. - استخدم
--followالخيار والمشاهدةdmesgالرسائل في الوقت الحقيقي.
صيد سعيد.