النقاط الرئيسية
- يتيح لك الأمر 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
الرسائل في الوقت الحقيقي.
صيد سعيد.