.\" -*- coding: UTF-8 -*- .\" Copyright 2006-2008, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH core 5 "16 مارس 2026" "صفحات دليل لينكس 6.18" .SH الاسم core \- ملف تفريغ النواة .SH الوصف الإجراء المبدئي لبعض الإشارات هو إنهاء عملية وإنتاج \fIملف تفريغ النواة\fP، وهو ملف يحتوي على صورة لذاكرة العملية وقت الإنهاء. يمكن استخدام هذه الصورة في مصحح (مثل \fBgdb\fP(1)) لفحص حالة البرنامج وقت إنهائه. يمكن العثور على قائمة الإشارات التي تسبب تفريغ النواة في \fBsignal\fP(7). .P يمكن لعملية تعيين حد الموارد الناعم \fBRLIMIT_CORE\fP لوضع حد أعلى لحجم ملف تفريغ النواة الذي سينتج إذا تلقت إشارة "تفريغ نواة"؛ انظر \fBgetrlimit\fP(2) للتفاصيل. .P توجد ظروف مختلفة لا ينتج فيها ملف تفريغ النواة: .IP \[bu] 3 لا تملك العملية صلاحية كتابة ملف النواة. (مبدئيًا، يسمى ملف النواة \fIcore\fP أو \fIcore.pid\fP، حيث \fIpid\fP هو معرف العملية التي فرغت النواة، ويُنشأ في دليل العمل الحالي. انظر أدناه لتفاصيل التسمية.) تفشل كتابة ملف النواة إذا كان الدليل الذي سينشأ فيه غير قابل للكتابة، أو إذا كان ملف بنفس الاسم موجودًا وغير قابل للكتابة أو ليس ملفًا عاديًا (مثل دليل أو رابط رمزي). .IP \[bu] يوجد بالفعل ملف (قابل للكتابة، عادي) بنفس الاسم الذي سيستخدم لتفريغ النواة، ولكن يوجد أكثر من رابط صلب لذلك الملف. .IP \[bu] نظام الملفات حيث سينشأ ملف تفريغ النواة ممتلئ؛ أو نفدت عُقد الفهرس (inodes)؛ أو وُصل للقراءة فقط؛ أو بلغ المستخدم حصته لنظام الملفات. .IP \[bu] الدليل الذي سينشأ فيه ملف تفريغ النواة غير موجود. .IP \[bu] حدود الموارد \fBRLIMIT_CORE\fP (حجم ملف النواة) أو \fBRLIMIT_FSIZE\fP (حجم الملف) للعملية مضبوطة على صفر؛ انظر \fBgetrlimit\fP(2) ووثائق أمر \fIulimit\fP للصدفة (\fIlimit\fP في \fBcsh\fP(1)). ومع ذلك، يُتجاهل \fBRLIMIT_CORE\fP إذا كان النظام مهيأً لتوجيه تفريغات النواة عبر أنبوب إلى برنامج. .IP \[bu] لا يمتلك الثنائي الذي تنفذه العملية صلاحية قراءة مفعلة. (هذا إجراء أمني لضمان أن ملفًا تنفيذيًا محتوياته غير قابلة للقراءة لا ينتج تفريغ نواة\[em]قد يكون قابلاً للقراءة\[em]يحتوي على صورة للتنفيذي.) .IP \[bu] .\" FIXME . Perhaps relocate discussion of /proc/sys/fs/suid_dumpable .\" and PR_SET_DUMPABLE to this page? تنفذ العملية برنامج set\-user\-ID (set\-group\-ID) مملوك لمستخدم (مجموعة) غير معرف المستخدم (المجموعة) الحقيقي للعملية، أو تنفذ العملية برنامجًا لديه قدرات ملف (انظر \fBcapabilities\fP(7)). (ومع ذلك، انظر وصف عملية \fBprctl\fP(2) \fBPR_SET_DUMPABLE\fP، ووصف ملف \fI/proc/sys/fs/suid_dumpable\fP في \fBproc\fP(5).) .IP \[bu] \fI/proc/sys/kernel/core_pattern\fP فارغ و \fI/proc/sys/kernel/core_uses_pid\fP يحتوي على القيمة 0. (هذه الملفات موصوفة أدناه.) لاحظ أنه إذا كان \fI/proc/sys/kernel/core_pattern\fP فارغًا و \fI/proc/sys/kernel/core_uses_pid\fP يحتوي على القيمة 1، فستكون أسماء ملفات تفريغ النواة بالصيغة \fI.pid\fP، وهذه الملفات مخفية ما لم يستخدم المرء خيار \fBls\fP(1) \fI\-a\fP. .IP \[bu] .\" commit 046d662f481830e652ac34cd112249adde16452a (منذ لينكس 3.7) هُيئت النواة بدون خيار \fBCONFIG_COREDUMP\fP. .P بالإضافة إلى ذلك، قد يستبعد تفريغ النواة جزءًا من مساحة العناوين للعملية إذا استُخدم علم \fBmadvise\fP(2) \fBMADV_DONTDUMP\fP. .P .\" على الأنظمة التي تستخدم \fBsystemd\fP(1) كإطار \fIinit\fP، قد تُوضع تفريغات النواة بدلاً من ذلك في موقع يحدده \fBsystemd\fP(1). انظر أدناه لمزيد من التفاصيل. .SS "تسمية ملفات تفريغ النواة" مبدئيًا، يُسمى ملف تفريغ النواة \fIcore\fP، ولكن يمكن ضبط ملف \fI/proc/sys/kernel/core_pattern\fP (منذ لينكس 2.6 و 2.4.21) لتعريف قالب يُستخدم لتسمية ملفات تفريغ النواة. يمكن أن يحتوي القالب على محددات % تُستبدل بالقيم التالية عند إنشاء ملف نواة: .P .RS 4 .PD 0 .TP 4 %% حرف % واحد. .TP %c حد الموارد الناعم لحجم ملف النواة للعملية المتعطلة (منذ لينكس 2.6.24). .TP %C .\" commit 8603b6f58637ce196d68f7749633ea81af196d66 وحدة المعالجة المركزية (CPU) التي شُغلت عليها المهمة (منذ لينكس 6.2). .TP %d .\" Added in git commit 12a2b4b2241e318b4f6df31228e4272d2c2968a1 وضع التفريغ\[em]نفس القيمة التي يعيدها \fBprctl\fP(2) \fBPR_GET_DUMPABLE\fP (منذ لينكس 3.7). .TP %e قيمة \fIcomm\fP للعملية أو الخيط، والتي تكون عادةً نفس اسم الملف التنفيذي (بدون بادئة المسار، ومقتطعة إلى حد أقصى 15 حرفًا)، ولكن قد تم تعديلها لتصبح شيئًا مختلفًا؛ انظر مناقشة \fI/proc/\fPpid\fI/comm\fP و \fI/proc/\fPpid\fI/task/\fPtid\fI/comm\fP في \fBproc\fP(5). .TP %E اسم مسار الملف التنفيذي، مع استبدال الشرطات المائلة (\[aq]/\[aq]) بعلامات تعجب (\[aq]!\[aq]) (منذ لينكس 3.0). .TP %f .\" commit f38c85f1ba6902e4e2e2bf1b84edf065a904cdeb اسم الملف الفعلي للملف التنفيذي، والذي قد يختلف عن %e (منذ لينكس 5.9). .TP %F .\" commit b5325b2a270fcaf7b2a9a0f23d422ca8a5a8bdea PIDFD للعملية المفرغة (منذ لينكس 6.16). .TP %g GID الحقيقي العددي للعملية المفرغة. .TP %h اسم المضيف (نفس \fInodename\fP الذي يعيده \fBuname\fP(2)). .TP %i .\" commit b03023ecbdb76c1dec86b41ed80b123c22783220 TID للخيط الذي تسبب في تفريغ النواة، كما يُرى في مساحة أسماء PID التي يقيم فيها الخيط (منذ لينكس 3.18). .TP %I .\" commit b03023ecbdb76c1dec86b41ed80b123c22783220 TID للخيط الذي تسبب في تفريغ النواة، كما يُرى في مساحة أسماء PID الأولية (منذ لينكس 3.18). .TP %p PID للعملية المفرغة، كما يُرى في مساحة أسماء PID التي تقيم فيها العملية. .TP %P .\" Added in git commit 65aafb1e7484b7434a0c1d4c593191ebe5776a2f PID للعملية المفرغة، كما يُرى في مساحة أسماء PID الأولية (منذ لينكس 3.12). .TP %s رقم الإشارة المسببة للتفريغ. .TP %t وقت التفريغ، معبرًا عنه بالثواني منذ الحقبة، 1970\-01\-01 00:00:00 +0000 (UTC). .TP %u UID الحقيقي العددي للعملية المفرغة. .PD .RE .P يتم إسقاط علامة % واحدة في نهاية القالب من اسم ملف النواة، وكذلك تركيبة % متبوعة بأي حرف غير تلك المذكورة أعلاه. تصبح جميع الأحرف الأخرى في القالب جزءًا حرفيًا من اسم ملف النواة. قد يتضمن القالب أحرف \[aq]/\[aq]، والتي تُفسر كمحددات لأسماء الدلائل. الحجم الأقصى لاسم ملف النواة الناتج هو 128 بايت (64 بايت قبل لينكس 2.6.19). القيمة المبدئية في هذا الملف هي "core". للتوافق مع الإصدارات السابقة، إذا كان \fI/proc/sys/kernel/core_pattern\fP لا يتضمن \fI%p\fP وكان \fI/proc/sys/kernel/core_uses_pid\fP (انظر أدناه) غير صفري، فسيتم إلحاق .PID باسم ملف النواة. .P تُفسر المسارات وفقًا للإعدادات النشطة للعملية المتعطلة. هذا يعني مساحة أسماء الوصل للعملية المتعطلة (انظر \fBmount_namespaces\fP(7))، ودليل العمل الحالي الخاص بها (الموجود عبر \fBgetcwd\fP(2))، ودليلها الجذر (انظر \fBchroot\fP(2)). .P منذ لينكس 2.4، وفر لينكس أيضًا طريقة أكثر بدائية للتحكم في اسم ملف تفريغ النواة. إذا كان الملف \fI/proc/sys/kernel/core_uses_pid\fP يحتوي على القيمة 0، فسيتم تسمية ملف تفريغ النواة ببساطة \fIcore\fP. إذا كان هذا الملف يحتوي على قيمة غير صفرية، فسيشمل ملف تفريغ النواة معرف العملية في اسم بالشكل \fIcore.PID\fP. .P .\" 9520628e8ceb69fa9a4aee6b57f22675d9e1b709 منذ لينكس 3.6، إذا تم تعيين \fI/proc/sys/fs/suid_dumpable\fP إلى 2 ("suidsafe")، فيجب أن يكون النمط إما اسم مسار مطلق (يبدأ بحرف \[aq]/\[aq] بادئ) أو أنبوب، كما هو معرف أدناه. .SS "توجيه تفريغات النواة إلى برنامج عبر الأنبوب" منذ لينكس 2.6.19، يدعم لينكس صيغة بديلة لملف \fI/proc/sys/kernel/core_pattern\fP. إذا كان الحرف الأول من هذا الملف هو رمز أنبوب (\fI|\fP)، فسيتم تفسير باقي السطر كسطر أوامر لبرنامج (أو سكريبت) في مساحة المستخدم سيتم تنفيذه. .P .\" commit 315c69261dd3fa12dbc830d4fa00d1fad98d3b03 منذ لينكس 5.3.0، يُقسّم قالب الأنبوب على المسافات إلى قائمة وسائط \fIقبل\fP توسيع معاملات القالب. في النوى الأقدم، تُوسّع معاملات القالب أولاً ويُقسّم السلسلة الناتجة على المسافات إلى قائمة وسائط. هذا يعني أنه في النوى الأقدم، يمكن لأسماء الملفات القابلة للتنفيذ المضافة بواسطة معاملات القالب \fI%e\fP و \fI%E\fP أن تُقسّم إلى وسائط متعددة. لذا يحتاج معالج تفريغ النواة إلى وضع أسماء الملفات القابلة للتنفيذ كآخر وسيطة وضمان ربط جميع أجزاء اسم الملف القابل للتنفيذ باستخدام المسافات. أسماء الملفات القابلة للتنفيذ ذات المسافات المتعددة لا تُعرض بشكل صحيح في النوى الأقدم، مما يعني أن معالج تفريغ النواة يحتاج إلى استخدام آليات للعثور على اسم الملف القابل للتنفيذ. .P بدلاً من كتابته إلى ملف، يُعطى تفريغ النواة كمدخل قياسي للبرنامج. لاحظ النقاط التالية: .IP \[bu] 3 يجب تحديد البرنامج باستخدام مسار مطلق (أو مسار نسبي إلى الدليل الجذر، \fI/\fP)، ويجب أن يتبع فوراً الحرف '|'. .IP \[bu] يمكن أن تتضمن وسائط سطر الأوامر أيًا من محددات % المذكورة أعلاه. على سبيل المثال، لتمرير PID العملية التي يجري تفريغها، حدد \fI%p\fP في وسيطة. .IP \[bu] العملية المنشأة لتشغيل البرنامج تعمل كمستخدم ومجموعة \fIroot\fP. .IP \[bu] التشغيل كـ \fIroot\fP لا يمنح أي تجاوزات أمنية استثنائية. أي أن LSMs (مثل SELinux) لا تزال نشطة وقد تمنع المعالج من الوصول إلى تفاصيل حول العملية المنهارة عبر \fI/proc/\fPpid. .IP \[bu] يُفسّر مسار البرنامج بالنسبة لمساحة أسماء الوصل الأولية حيث يُنفّذ دائمًا هناك. لا يتأثر بإعدادات (مثل الدليل الجذر، مساحة أسماء الوصل، دليل العمل الحالي) العملية المنهارة. .IP \[bu] تعمل العملية في مساحات الأسماء الأولية (PID، الوصل، المستخدم، وهكذا) وليس في مساحات أسماء العملية المنهارة. يمكن استخدام محددات مثل \fI%P\fP للعثور على دليل \fI/proc/\fPpid الصحيح واستكشاف/الدخول إلى مساحات أسماء العملية المنهارة إذا لزم الأمر. .IP \[bu] تبدأ العملية بدليل عملها الحالي كدليل جذر. إذا رغبت، يمكن تغيير دليل العمل لعملية التفريغ باستخدام القيمة المقدمة من المحدد \fI%P\fP للتغيير إلى موقع عملية التفريغ عبر \fI/proc/\fPpid\fI/cwd\fP. .IP \[bu] يمكن توفير وسائط سطر الأوامر للبرنامج (منذ لينكس 2.6.24)، محددة بمسافات بيضاء (حتى طول سطر إجمالي يبلغ 128 بايت). .IP \[bu] .\" لا يُطبّق حد \fBRLIMIT_CORE\fP على تفريغات النواة التي تُنقل عبر أنبوب إلى برنامج عبر هذه الآلية. .SS /proc/sys/kernel/core_pipe_limit عند جمع تفريغات النواة عبر أنبوب إلى برنامج مساحة المستخدم، قد يكون من المفيد لبرنامج الجمع جمع بيانات حول العملية المنهارة من دليل \fI/proc/\fPpid لتلك العملية. للقيام بذلك بأمان، يجب أن تنتظر النواة حتى يخرج برنامج جمع تفريغ النواة، حتى لا تُزال ملفات \fI/proc/\fPpid للعملية المنهارة قبل الأوان. وهذا بدوره يخلق إمكانية أن برنامج جمع سيئ السلوك يمكنه منع استرداد عملية منهارة بمجرد عدم الخروج أبدًا. .P .\" commit a293980c2e261bd5b0d2a77340dd04f684caff58 منذ لينكس 2.6.32، يمكن استخدام \fI/proc/sys/kernel/core_pipe_limit\fP للدفاع ضد هذا الاحتمال. تحدد القيمة في هذا الملف عدد العمليات المنهارة المتزامنة التي يمكن نقلها عبر أنبوب إلى برامج مساحة المستخدم بالتوازي. إذا تجاوزت هذه القيمة، فإن تلك العمليات المنهارة فوق هذه القيمة تُسجل في سجل النواة ويُتخطى تفريغات نواتها. .P .\" القيمة 0 في هذا الملف خاصة. تشير إلى أنه يمكن التقاط عمليات غير محدودة بالتوازي، ولكن لن يحدث أي انتظار (أي أن برنامج الجمع غير مضمون الوصول إلى \fI/proc/\fP). القيمة المبدئية لهذا الملف هي 0. .SS "التحكم في أي تعيينات تُكتب إلى تفريغ النواة" منذ لينكس 2.6.23، يمكن استخدام الملف الخاص بلينكس \fI/proc/\fPpid\fI/coredump_filter\fP للتحكم في أي قطاعات ذاكرة تُكتب إلى ملف تفريغ النواة في حالة تنفيذ تفريغ نواة للعملية بمعرف العملية المقابل. .P القيمة في الملف هي قناع بت لأنواع تعيين الذاكرة (انظر \fBmmap\fP(2)). إذا تم تعيين بت في القناع، فإن تعيينات الذاكرة من النوع المقابل تُفرّغ؛ وإلا، لا تُفرّغ. للبتات في هذا الملف المعاني التالية: .P .PD 0 .RS 4 .TP bit 0 افرغ تعيينات خاصة مجهولة. .TP bit 1 افرغ تعيينات مشتركة مجهولة. .TP bit 2 افرغ تعيينات خاصة مدعومة بملفات. .TP bit 3 .\" file-backed shared mappings of course also update the underlying .\" mapped file. تفريغ التعيينات المشتركة المدعومة بالملفات. .TP bit 4 (منذ لينكس 2.6.24) تفريغ رؤوس ELF. .TP bit 5 (منذ لينكس 2.6.28) تفريغ الصفحات الضخمة الخاصة. .TP bit 6 (منذ لينكس 2.6.28) تفريغ الصفحات الضخمة المشتركة. .TP bit 7 (منذ لينكس 4.4) .\" commit ab27a8d04b32b6ee8c30c14c4afd1058e8addc82 تفريغ صفحات DAX الخاصة. .TP bit 8 (منذ لينكس 4.4) .\" commit ab27a8d04b32b6ee8c30c14c4afd1058e8addc82 تفريغ صفحات DAX المشتركة. .RE .PD .P مبدئيًا، تُعيّن البتات التالية: 0، 1، 4 (إذا كان خيار تهيئة النواة \fBCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS\fP مفعّلاً)، و5. يمكن تعديل هذا المبدئي عند الإقلاع باستخدام خيار الإقلاع \fIcoredump_filter\fP. .P تُعرض قيمة هذا الملف بالنظام الست عشري. (وبالتالي تُعرض القيمة المبدئية كـ 33.) .P لا تُفرّغ صفحات الإدخال/الإخراج المعيّنة بالذاكرة مثل مخزن الإطار أبدًا، وتُفرّغ صفحات DSO الافتراضية (\fBvdso\fP(7)) دائمًا، بغض النظر عن قيمة \fIcoredump_filter\fP. .P ترث عملية فرعية منشأة عبر \fBfork\fP(2) قيمة \fIcoredump_filter\fP الخاصة بعملية الأب؛ تُحفظ قيمة \fIcoredump_filter\fP عبر \fBexecve\fP(2). .P قد يكون من المفيد تعيين \fIcoredump_filter\fP في الصدفة الأب قبل تشغيل برنامج، على سبيل المثال: .P .in +4n .EX $\fB echo 0x7 > /proc/self/coredump_filter\fP $\fB ./some_program\fP .EE .in .P .\" يُوفّر هذا الملف فقط إذا بُنيت النواة مع خيار التهيئة \fBCONFIG_ELF_CORE\fP. .SS "تفريغات النواة وsystemd" على الأنظمة التي تستخدم إطار \fIinit\fP الخاص بـ \fBsystemd\fP(1)، قد تُوضع تفريغات النواة في موقع تحدده \fBsystemd\fP(1). لفعل ذلك، تستخدم \fBsystemd\fP(1) ميزة \fIcore_pattern\fP التي تسمح بتوجيه تفريغات النواة إلى برنامج. يمكن التحقق من ذلك بفحص ما إذا كانت تفريغات النواة تُوجّه إلى برنامج \fBsystemd\-coredump\fP(8): .P .in +4n .EX $\fB cat /proc/sys/kernel/core_pattern\fP; |/usr/lib/systemd/systemd\-coredump %P %u %g %s %t %c %e .EE .in .P في هذه الحالة، تُوضع تفريغات النواة في الموقع المكوّن لـ \fBsystemd\-coredump\fP(8)، عادةً كملفات مضغوطة بـ \fBlz4\fP(1) في الدليل \fI/var/lib/systemd/coredump/\fP. يمكن سرد تفريغات النواة التي سُجّلت بواسطة \fBsystemd\-coredump\fP(8) باستخدام \fBcoredumpctl\fP(1): .P .EX $\fB coredumpctl list | tail \-5\fP; Wed 2017\-10\-11 22:25:30 CEST 2748 1000 1000 3 present /usr/bin/sleep Thu 2017\-10\-12 06:29:10 CEST 2716 1000 1000 3 present /usr/bin/sleep Thu 2017\-10\-12 06:30:50 CEST 2767 1000 1000 3 present /usr/bin/sleep Thu 2017\-10\-12 06:37:40 CEST 2918 1000 1000 3 present /usr/bin/cat Thu 2017\-10\-12 08:13:07 CEST 2955 1000 1000 3 present /usr/bin/cat .EE .P تتضمن المعلومات المعروضة لكل تفريغ نواة تاريخ ووقت التفريغ، ومعرف العملية (PID)، ومعرف المستخدم (UID)، ومعرف المجموعة (GID) لعملية التفريغ، ورقم الإشارة التي سببت تفريغ النواة، واسم مسار الملف القابل للتنفيذ الذي كانت تشغله العملية المُفرّغة. تسمح الخيارات المختلفة لـ \fBcoredumpctl\fP(1) بسحب ملف تفريغ نواة محدد من موقع \fBsystemd\fP(1) إلى ملف محدد. على سبيل المثال، لاستخراج تفريغ النواة لمعرف العملية 2955 الموضح أعلاه إلى ملف باسم \fIcore\fP في الدليل الحالي، يمكن استخدام: .P .in +4n .EX $\fB coredumpctl dump 2955 \-o core\fP; .EE .in .P للحصول على تفاصيل أكثر شمولاً، راجع صفحة الدليل \fBcoredumpctl\fP(1). .P لتعطيل آلية \fBsystemd\fP(1) التي تؤرشف تفريغات النواة (بشكل دائم)، واستعادة سلوك أقرب إلى سلوك Linux التقليدي، يمكن تعيين تجاوز لآلية \fBsystemd\fP(1) باستخدام شيء مثل: .P .in +4n .EX #\fB echo \[dq]kernel.core_pattern=core.%p\[dq] > \[rs]\fP; \f[B]/etc/sysctl.d/50\-coredump.conf\fR #\fB /lib/systemd/systemd\-sysctl\fP; .EE .in .P من الممكن أيضًا تغيير إعداد \fIcore_pattern\fP مؤقتًا (أي حتى إعادة الإقلاع التالية) باستخدام أمر مثل التالي (مما يجعل أسماء ملفات تفريغ النواة تتضمن اسم الملف القابل للتنفيذ بالإضافة إلى رقم الإشارة التي سببت تفريغ النواة): .P .in +4n .EX #\fB sysctl \-w kernel.core_pattern=\[dq]%e\-%s.core\[dq]\fP; .EE .in .\" .SH ملاحظات يمكن استخدام أمر \fBgdb\fP(1) \fIgcore\fP للحصول على تفريغ نواة لعملية قيد التشغيل. .P .\" Changed with commit 6409324b385f3f63a03645b4422e3be67348d922 .\" Always including the PID in the name of the core file made .\" sense for LinuxThreads, where each thread had a unique PID, .\" but doesn't seem to serve any purpose with NPTL, where all the .\" threads in a process share the same PID (as POSIX.1 requires). .\" Probably the behavior is maintained so that applications using .\" LinuxThreads continue appending the PID (the kernel has no easy .\" way of telling which threading implementation the user-space .\" application is using). -- mtk, April 2006 في إصدارات لينكس حتى الإصدار 2.6.27، إذا قامت عملية متعددة الخيوط (أو بشكل أدق، عملية تشارك ذاكرتها مع عملية أخرى عن طريق إنشائها باستخدام علامة \fBCLONE_VM\fP من \fBclone\fP(2)) بتفريغ النواة، فإن معرف العملية يُلحق دائمًا باسم ملف النواة، ما لم يكن معرف العملية مضمنًا بالفعل في مكان آخر من اسم الملف عبر مواصفة \fI%p\fP في \fI/proc/sys/kernel/core_pattern\fP. (هذا مفيد بشكل أساسي عند استخدام تطبيق LinuxThreads القديم، حيث يكون لكل خيط من العملية معرف عملية مختلف.) .SH أمثلة يمكن استخدام البرنامج أدناه لتوضيح استخدام صيغة الأنبوب في ملف \fI/proc/sys/kernel/core_pattern\fP. توضح جلسة الصدفة التالية استخدام هذا البرنامج (المُجمّع لإنشاء ملف تنفيذي باسم \fIcore_pattern_pipe_test\fP): .P .in +4n .EX $\fB cc \-o core_pattern_pipe_test core_pattern_pipe_test.c\fP $\fB su\fP Password: #\fB echo \[dq]|$PWD/core_pattern_pipe_test %p UID=%u GID=%g sig=%s\[dq] > \[rs]\fP \fB/proc/sys/kernel/core_pattern\fP #\fB exit\fP $\fB sleep 100\fP \fB\[ha]\[rs]\fP # type control\-backslash Quit (core dumped) $\fB cat core.info\fP argc=5 argc[0]= argc[1]=<20575> argc[2]= argc[3]= argc[4]= Total bytes in core dump: 282624 .EE .in .SS "مصدر البرنامج" \& .EX /* core_pattern_pipe_test.c */ \& #define _GNU_SOURCE #include #include #include #include #include #include \& #define BUF_SIZE 1024 \& int main(int argc, char *argv[]) { ssize_t nread, tot; char buf[BUF_SIZE]; FILE *fp; char cwd[PATH_MAX]; \& /* Change our current working directory to that of the crashing process. */ \& snprintf(cwd, PATH_MAX, "/proc/%s/cwd", argv[1]); chdir(cwd); \& /* Write output to file "core.info" in that directory. */ \& fp = fopen("core.info", "w+"); if (fp == NULL) exit(EXIT_FAILURE); \& /* Display command\-line arguments given to core_pattern pipe program. */ \& fprintf(fp, "argc=%d\[rs]n", argc); for (size_t j = 0; j < argc; j++) fprintf(fp, "argc[%zu]=<%s>\[rs]n", j, argv[j]); \& /* Count bytes in standard input (the core dump). */ \& tot = 0; while ((nread = read(STDIN_FILENO, buf, BUF_SIZE)) > 0) tot += nread; fprintf(fp, "Total bytes in core dump: %zd\[rs]n", tot); \& fclose(fp); exit(EXIT_SUCCESS); } .EE .SH "انظر أيضًا" \fBbash\fP(1), \fBcoredumpctl\fP(1), \fBgdb\fP(1), \fBgetrlimit\fP(2), \fBmmap\fP(2), \fBprctl\fP(2), \fBsigaction\fP(2), \fBelf\fP(5), \fBproc\fP(5), \fBpthreads\fP(7), \fBsignal\fP(7), \fBsystemd\-coredump\fP(8) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .