CORE(5) فایل‌های پیکربندی CORE(5)

core - پرونده رونوشت هسته حافظه هنگام خرابی فرایند (Core Dump)

رفتار پیش‌فرض برخی از سیگنال‌ها (مانند SIGSEGV, SIGABRT یا SIGFPE) موجب خاتمه یافتن فرایند و ایجاد یک پرونده رونوشت حافظه (core dump file) می‌شود؛ فایلی که حاوی تصویری از حافظه فرایند در لحظه خاتمه آن است. این تصویر می‌تواند در یک اشکال‌زدا (مانند gdb(1)) برای بازرسی وضعیت متغیرها، پشته فراخوانی و ساختار برنامه در زمان وقوع خطا مورد استفاده قرار گیرد. فهرست کامل سیگنال‌هایی که موجب تولید پرونده رونوشت می‌شوند در signal(7) آمده است.

یک فرایند می‌تواند با تنظیم حد نرم منبع RLIMIT_CORE حداکثر اندازه مجاز فایل رونوشت حافظه را مشخص کند؛ برای جزئیات به getrlimit(2) مراجعه نمایید.

در شرایط زیر پرونده رونوشت تولید نمی‌شود:

•
فرایند دسترسی نوشتن در دایرکتوری جاری را نداشته باشد، یا پرونده‌ای هم‌نام از قبل وجود داشته باشد که قابل نوشتن نباشد.
•
حد منبع RLIMIT_CORE بر روی صفر تنظیم شده باشد.
•
باینری برنامه دسترسی خواندن نداشته باشد یا برنامه دارای بیت‌های set-user-ID یا set-group-ID باشد و پیکربندی مناسب در sysctl تنظیم نشده باشد.
•
فضای دیسک در سیستم فایل مربوطه پر شده باشد.

به طور پیش‌فرض، پرونده رونوشت با نام core یا core.pid در دایرکتوری کاری جاری فرایند ذخیره می‌شود. از هسته لینوکس ۲.۶ به بعد، الگوی نام‌گذاری پرونده‌ها از طریق فایل /proc/sys/kernel/core_pattern قابل کنترل و سفارشی‌سازی است. در این الگو کاراکترهای اسکیپ زیر پشتیبانی می‌شوند:

%%
یک نویسه تک درصد (%)
%p
شناسه فرایند (PID) مربوط به فرایند خاتمه‌یافته
%u
شناسه عددی کاربر واقعی (UID)
%g
شناسه عددی گروه واقعی (GID)
%s
شماره سیگنالی که موجب ایجاد رونوشت شده است
%t
زمان وقوع رویداد به صورت ثانیه‌های Epoch
%h
نام میزبان سیستم (hostname)
%e
نام فایل اجرایی برنامه (بدون مسیر دایرکتوری)
%E
مسیر کامل نام فایل اجرایی (که در آن اسلش‌ها با علامت ! جایگزین شده‌اند)

اگر نخستین کاراکتر در /proc/sys/kernel/core_pattern علامت لوله (|) باشد، داده‌های رونوشت حافظه به ورودی استاندارد (stdin) برنامه‌ای که در ادامه خط مشخص شده هدایت می‌شوند (مانند برنامه‌های جمع‌آوری خودکار خطا نظیر systemd-coredump).

از نسخه ۲.۶.۲۳ هسته لینوکس، فایل /proc/[pid]/coredump_filter به ازای هر فرایند مشخص می‌کند کدام نوع از نواحی حافظه (صفحات ناشناس خصوصی، صفحات ناشناس اشتراکی، نگاشت‌های مبتنی بر فایل و غیره) در فایل رونوشت گنجانده شوند.

gdb(1), getrlimit(2), prctl(2), sigaction(2), elf(5), proc(5), signal(7)

مه ۲۰۲۵ man-pages