حرف O

عملية يتيمة

Orphan Process

آخر تحديث: 2026-10-12
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

في نظام لينكس، كل برنامج يعمل يسمى عملية (Process). كل عملية يتم إنشاؤها بواسطة عملية أخرى تسمى العملية الأب (Parent Process). العملية اليتيمة (Orphan Process) هي ببساطة عملية لا تزال تعمل في الخلفية، لكن العملية الأب التي قامت بإنشائها قد انتهت أو توقفت بشكل غير متوقع. تخيل أن هناك مديرا في شركة (العملية الأب) طلب من موظف (العملية الابن) أداء مهمة معينة. إذا غادر المدير الشركة فجأة بينما لا يزال الموظف يعمل، يصبح هذا الموظف كأنه يتيم برمجيا. في لينكس، لا يترك النظام هذه العمليات هائمة، بل يقوم مدير النظام الرئيسي، وهو أول عملية تعمل في النظام (Init)، بتبني هذه العملية اليتيمة ومراقبتها حتى تنتهي بأمان.

الشرح التقني المتقدم

في بيئة أنظمة لينكس، تعتمد بنية التنفيذ على تسلسل هرمي دقيق. عندما تنتهي العملية الأب (Parent Process) بشكل غير متوقع أو تتعمد الإنهاء قبل العملية الابن (Child Process)، تصبح هذه الأخيرة عملية يتيمة (Orphan Process). نظام لينكس مصمم بذكاء لمنع هذه العمليات من التخبط، حيث تتدخل النواة (Kernel) فورا لإعادة توجيهها وضمان استمراريتها.

كيفية تعامل النظام مع العمليات اليتيمة

بمجرد أن تفقد العملية أصلها، يقوم النظام بتنفيذ آلية تبني تلقائية لضمان عدم بقائها بلا مرجع:

عملية التهيئة (Init أو systemd): هي العملية رقم واحد في النظام والتي تملك المعرف (PID 1)، ودورها الأساسي هنا هو تبني أي عملية يتيمة. بمجرد التبني، يصبح Init هو الأب الجديد، ويتولى مسؤولية قراءة حالة خروجها (Exit Status) فور انتهائها لمنع تحولها إلى عملية زومبي (Zombie Process).

رصد العمليات اليتيمة برمجيا

يمكنك مراقبة العمليات في نظامك وتحديد تلك التي تم تبنيها حديثا من قبل عملية التهيئة:

أمر البحث عن العمليات المتبناة:

ps -elf | awk '{if ($5 == 1 && $4 != 1) print $0}'

توضيح لما يفعله الأمر البرمجي السابق:

  • الأمر ps -elf: يقوم بعرض قائمة مفصلة جدا بجميع العمليات النشطة حاليا في النظام.
  • الأداة awk: تستخدم لفلترة النتائج المطبوعة بناء على شروط منطقية محددة.
  • الشرط $5 == 1: يتحقق مما إذا كان معرف العملية الأب (PPID) يساوي 1، لتحديد العمليات التي تدار الآن بواسطة Init.

ملاحظة ختامية: الإدارة الآمنة للموارد (System Administration)

العمليات اليتيمة ليست ضارة بطبيعتها ولا تستهلك الموارد عبثا لأنها لا تزال تؤدي مهامها المطلوبة. ومع ذلك، ينصح المطورون دائما بكتابة برمجيات تتعامل مع الإشارات (Signals) بشكل سليم لإنهاء العمليات الفرعية قبل إغلاق البرنامج الرئيسي، وذلك لترتيب بيئة العمل وتجنب الفوضى في مساحة العمليات المحجوزة.

المصادر المعتمدة :