في كل مرة يتم فيها تنفيذ برنامج، يقوم النواة بإنشاء عملية مرتبطة بالبرنامج. ببساطة، العملية هي نسخة تعمل من برنامج في نظام التشغيل لينكس. العملية التي تم إنشاؤها بواسطة النواة تُشار إليها بـ “عملية الأصل” . العمليات المشتقة أو المُنجَّبة من العملية الأصلية تُعرف باسم “عمليات الأطفال” . قد تتكون العملية الأصلية من عدة عمليات فرعية تمتلك كل منها مُعرِّف عملية فريد (PID) Process ID ولكن تشترك في نفس PPID.
في هذا الدليل، نستكشف عدة طرق يمكنك استخدامها لمعرفة أرقام معرف العملية الأصلية (PPIDs) أو العمليات على نظام Linux.
ما الفرق بين PID و PPID؟
A program that is loaded into memory and running is known as a process. Once started, the process is given a unique number known as the process ID (PID) that uniquely identifies it in the system. The process can be referred to at any time using its PID. For example, to kill a process, you will have to know its PID first.
بالإضافة إلى PID، يتم تعيين كل عملية عملية أصلية ID (PPID) تظهر أي عملية أنتجتها. وبالتالي، فإن PPID هو PID العملية الأصلية.
لوضع هذا في السياق، لنفترض أن العملية 5 بمعرف PID من 5050 تبدأ العملية 6. سيتم تعيين العملية 6 معرف PID فريد مثل 6670، لكن سيظل يتم تعيين PPID من 5050.
العملية الأصلية هنا هي العملية 5 والعملية الأبناء هي 6. يتم تعيين العملية الأبناء معرف PID فريد ولكن PPID هو نفسه معرف PID للعملية الأصلية (العملية 5)
A single parent can start multiple several child processes, each with a unique PID but all sharing the same PPID.
تعرف على معرف العملية الأصلية (PPID) في Linux
هناك نهجان رئيسيان لمعرفة PPID من عملية معملة على نظام Linux:
- باستخدام أمر pstree.
- استخدام أمر ps.
اكتشاف معرّف العملية الأبية لعملية لينكس باستخدام أمر pstree
A pstree command is a command-line tool that displays running processes as a tree, which makes for a convenient way of displaying processes in a hierarchy. It shows the parent-child relationship in a tree hierarchy.
باستخدام خيار -p
، يعرض pstree جميع العمليات الأبية المستمرة مع عملياتها الأبناء المقابلة والمعرّفين الشخصيين لها.
$ pstree -p

من الناتج، يمكننا رؤية معرّف العملية الأبية مع معرّف العملية الأبناء.
للتوضيح، سنتحقق من PPID لـ موزيلا فايرفوكس مع التنظيم العام للعملية باستخدام الأمر التالي:
$ pstree -p | grep 'firefox'

من الناتج، يمكنك رؤية أن PPID لـ فايرفوكس هو 3457 والباقي هم معرّفات العمليات للعمليات الأبناء.
لعرض فقط PPID لفايرفوكس وتخطي بقية الناتج، ضع الناتج في أمر head مع -1
لعرض السطر الأول.
$ pstree -p | grep 'firefox' | head -1

اكتشاف معرّف العملية الأبية لعملية لينكس باستخدام أمر ps
الخيار الآخر للعثور على PPID من عملية هو أمر ps، وهو أمر شائع الاستخدام يعرض العمليات المستمرة حاليا على نظام لينكس.
عند استخدامه مع خيار -ef
، يسرد أمر ps جميع العمليات المستمرة مع تفاصيلها مثل UID، PID، PPID، إلخ.
$ ps -ef

للتركيز وعرض PPID لعملية معينة، على سبيل المثال، Firefox، امر الـ -e
وأعد إرسال الناتج إلى أمر grep كما هو موضح.
$ ps -e | grep 'firefox'

مرة أخرى، يمكنك من خلال الناتج رؤية أن PPID Firefox هو 3457.
في هذا الدليل، قمنا بشرح كيف يمكنك العثور على PPIDs للعمليات المستمرة على نظام لينكس. يمكنك استخدام إما أمر pstree أو أمر ps لتحقيق نفس الهدف.