إعداد Linux Core the Dump Location

A Dad Linux Core The Dump Location



ما هو 'Core Dump' في Linux؟

عندما تخرج عملية ما بشكل غير متوقع ، فإنها غالبًا ما تترك وراءها 'تفريغ أساسي' في نظامك. هناك رسالة ذات صلة يتم تضمينها مع هذا. يعمل النواة كأداة لتصحيح الأخطاء وصورة للذاكرة تتضمن أيضًا معلومات التصحيح. إذا كنت مستخدمًا لا تريد تصحيح أخطاء برنامج ما ، فيمكنك حذف النواة:

$ جمهورية مقدونيا النواة

يمكنك أيضًا تركها كما هي ، حيث يتم الكتابة فوق اللب القديم إذا تم التخلص من جوهر جديد. يمكنك أيضًا إلغاء تنشيط تفريغ النواة بالأمر التالي:







$ ينقص 0

يمكننا إنشاء عمليات تفريغ أساسية عند الطلب (على سبيل المثال ، عبر مصحح أخطاء) أو يمكن إنتاجها تلقائيًا عند الإنهاء. تبدأ النواة عمليات التفريغ الأساسية كنتيجة للخروج المفاجئ للبرنامج. قد يتم إرسالها إلى بعض البرامج الأخرى (مثل systemd-coredump) لعمليات إضافية.



كما هو الحال عادة ، هناك مفاضلة بين جمع البيانات من أجل استقرار أفضل واستكشاف الأخطاء وإصلاحها وخطر الكشف عن المعلومات الحساسة من بيانات التصحيح.



ماذا سنغطي؟

في هذه المقالة ، سنرى كيفية تعيين موقع عمليات التفريغ الأساسية على نظام التشغيل Ubuntu 20.04. لنبدأ الآن.





إنشاء تفريغ أساسي

دعنا نرى أولاً كيف يمكننا إنشاء تفريغ أساسي. لهذا ، نستخدم أمر Linux kill. أولاً ، ابحث عن معرف العملية ثم أرسل إشارة القتل. على سبيل المثال ، لنبدأ عملية النوم ثم نقتلها باستخدام PID الخاص بها:

$ نايم 500

$ قتل SIGTRAP $ ( سيطرة نايم )



الآن بعد أن تعلمت كيفية إنشاء تفريغ أساسي ، يمكنك استخدامه في الأقسام التالية التالية.

الى اين يذهبون؟

يُطلق على ملف التفريغ الأساسي اسم core.pid افتراضيًا ويتم إنشاؤه في دليل العمل الخاص بالتطبيق. هنا ، معرف العملية هو معرف العملية.

باستخدام أداة ulimit ، يمكنك الحصول على حدود موارد النظام أو تغييرها للهيكل الحالي وأي قذائف تأتي بعده. للتحقق من حد حجم الملف الأساسي أو تكوينه ، استخدم الأمر التالي:

$ ينقص

لتجنب تحديد الملف الأساسي أو اقتطاعه ، تأكد من تعيين الحد بشكل عام على 'غير محدود' [1]. يمكن القيام بذلك في /etc/security/limits.conf بإضافة السطر التالي:

الجذر - الأساسية غير محدودة

* - الأساسية غير محدودة

الآن ، ما عليك سوى تسجيل الخروج وتسجيل الدخول مرة أخرى حتى يتم تطبيق الحدود على جلستك.

تخصيص موقع التفريغ الأساسي

عادةً ما يتم استخدام الأمر 'sysctl kernel.core_pattern' أو الأمر '/ proc / sys / kernel / core_pattern' لتعيين الموقع الذي تنتقل إليه عمليات التفريغ الأساسية.

أدخل الأمر التالي لرؤية إعدادات النمط الأساسي الحالي:

$ قط / بروك / sys / نواة / الأساسية_نمط

عادة ، ستجد القيمة الافتراضية مدرجة على أنها 'أساسية' هنا.

استخدام '/ proc / sys / kernel / core_pattern' لتعيين موقع التفريغ الأساسي

دعنا نعيد توجيه عمليات التفريغ الأساسية مؤقتًا إلى موقع جديد ، على سبيل المثال / tmp / dumps / core ، باستخدام ملف '/ proc / sys / kernel / core_pattern' [2] [3]. الآن ، اتبع الخطوات التالية:

الخطوة 1 . أولاً ، قم بإنشاء دليل لتخزين عمليات التفريغ الأساسية:

$ مكدير -p / tmp / أحمق / النوى /

الخطوة 2 . امنح الأذونات المطلوبة لهذا الدليل:

$ chmod أ + س / tmp / أحمق / النوى /

الخطوه 3 . الآن ، قم بتعيين مسار التفريغ الأساسي مؤقتًا:

$ صدى صوت '/ tmp / dump / core / core' | سودو قمزة / بروك / sys / نواة / الأساسية_نمط

مرة أخرى ، قم بتعيين ulimit عالميًا إلى غير محدود.

هنا يمكننا إلحاق بعض المعلومات الأخرى باسم الملف كما هو موضح في الآتي:

$ صدى صوت '/tmp/dump/cores/core_٪e.٪p_٪t' | سودو قمزة / بروك / sys / نواة / الأساسية_نمط

يمكن تعريف كل معلمة يتم استخدامها هنا على النحو التالي:

٪ و: ل تنفيذ ملف اسم

٪ ص: ل معالجة هوية شخصية أو pid.

٪ ر: ل إضافة طابع زمني

الخطوة 4 . بعد ذلك ، يتعين علينا تغيير ملف '/etc/sysctl.conf' لتطبيق الإعدادات السابقة بشكل دائم. افتح هذا الملف:

$ سودو نانو / إلخ / sysctl.conf

الآن ، أضف السطر التالي إلى هذا الملف:

kernel.core_pattern = / tmp / أحمق / النوى / النواة

أيضًا ، بدلاً من هذا السطر ، يمكنك إضافة هذا:

kernel.core_pattern = '/tmp/dump/cores/core_٪e.٪p_٪t'

هذا كل ما نحتاج إلى القيام به. الآن ، قم بإنشاء تفريغ أساسي كما هو مذكور في قسم 'إنشاء تفريغ أساسي'. بعد ذلك ، يمكننا التحقق مما إذا كان ملفنا الأساسي قد تم إنشاؤه أم لا:

$ ls / tmp / أحمق / النوى /

استخدام أمر 'Sysctl' لتعيين موقع التفريغ الأساسي

كما ذكرنا سابقًا ، يمكننا أيضًا استخدام الأمر sysctl للغرض نفسه. دعنا نغير موقع التفريغ الأساسي وتنسيق الملف الأساسي:

الخطوة 1 . قم بإنشاء دليل جديد ومنح الأذونات المطلوبة:

$ مكدير -p / tmp / mydumps

$ chmod a + rwx / tmp / mydumps

الخطوة 2 . الآن ، فقط قم بتشغيل الأمر التالي:

$ سودو sysctl -في kernel.core_pattern = / tmp / mydumps / النواة_ ٪ و. ٪ ص_ ٪ ر

الخطوه 3 . الآن ، مرة أخرى ، قم بتوليد التفريغ الأساسي كما فعلنا سابقًا. بعد ذلك ، تحقق مما إذا كان الملف الأساسي قد تم إنشاؤه أم لا:

$ ls / tmp / mydumps /

في أنظمة Ubuntu ، غالبًا ما يتم إرسال عمليات التفريغ الأساسية إلى Apport. بالنسبة للأنظمة المستندة إلى Red Hat ، قد تتم إعادة توجيهها إلى أداة الإبلاغ عن الأخطاء التلقائية (ABRT). في البداية ، كنت أواجه مشكلة في تكوين موقع التفريغ الأساسي ، لذلك اضطررت إلى تعطيل Apport تمامًا على Ubuntu 20.04. ربما يكون هذا هو الحال أيضًا مع ريد هات وآخرين.

استنتاج

في هذه المقالة ، رأينا كيف يمكننا تخصيص موقع التفريغ الأساسي على نظام التشغيل Ubuntu 20.04. يمكن أن تساعدك عمليات التفريغ الأساسية في اكتشاف الخطأ ، لكنها مخيفة لتسريب البيانات الحساسة. يجب تعطيل عمليات التفريغ الأساسية عند عدم الحاجة إليها وتمكينها فقط عند الضرورة القصوى. في مثل هذه الحالة ، تأكد من تخزين الملفات بشكل آمن بحيث لا يتمكن المستخدمون العاديون من الوصول إلى البيانات. علاوة على ذلك ، بغض النظر عن قرارك ، يجب عليك دائمًا اختبار التكوين الخاص بك للتأكد من أنه يعمل على النحو المنشود.

يتم التعامل مع عمليات التفريغ الأساسية والتكوينات الافتراضية بشكل مختلف بواسطة أنظمة تشغيل مختلفة. في الآونة الأخيرة ، اعتمدت معظم أنظمة Linux systemd ، مما أدى إلى بعض التعديلات الطفيفة في القواعد. اعتمادًا على كيفية تكوين نظامك ، قد تحتاج إلى البحث عن عمليات تفريغ أساسية.