كيفية العثور على معرف عملية Linux باستخدام pidof أو pgrep

النقاط الرئيسية

للعثور على معرف العملية لعملية Linux، استخدم الأمر pidof، مثل هذا: “pidof examplename”. إذا كنت تعرف جزءًا فقط من اسم معرف العملية، فيمكنك استخدام “pgrep examplenamefragment” بدلاً من ذلك. استبدل “examplename” و”examplenamefragment” بالمصطلحات التي تريد البحث عنها.



غالبًا ما يعني العمل مع عملية Linux معرفة معرف العملية، أو PID. وهو رقم فريد يُعطى لكل جزء من البرامج قيد التشغيل. وفيما يلي طريقتان لمعرفة ما هو.


ما هو معرف عملية Linux؟

داخليًا، يتتبع Linux عملية التشغيل من خلال تخصيص رقم تعريف فريد لها، يُسمى معرف العملية أو PID. كل تطبيق وأداة مساعدة وخادم قيد التشغيل لديه معرف عملية.

إن معرفات العملية هي قيم عددية بسيطة. وستتلقى العملية التي بدأت حديثًا معرف عملية أعلى بمقدار واحد من آخر معرف عملية تم إصداره. وبالتالي فإن العملية التي تحمل أعلى معرف عملية هي العملية الأحدث — أي الأحدث — التي تم إطلاقها. ويستمر هذا حتى يصل النظام إلى القيمة القصوى لمعرف العملية.

الحد الأقصى لمعرف العملية هو 32768. بمجرد الوصول إلى هذا الرقم، يعود Linux إلى البداية ويبحث عن معرف العملية الذي أصبح حرًا لأن العملية التي كانت تمتلكه سابقًا قد انتهت.


العملية ذات معرف العملية 1 هي العملية الأولى التي يتم تشغيلها عند تشغيل Linux بواسطة عمليات التمهيد. في الأنظمة المستندة إلى systemd، سيتم تشغيلها systemd. في الأنظمة الأخرى من المرجح أن يكون init على الرغم من أن بعض توزيعات Linux تستخدم بدائل مثل أوبن آر سي أو س6.

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

كيفية الحصول على معرف عملية Linux باستخدام الأمر pidof

ال pidof يمكن اعتبار الأمر مزيجًا من “PID” و”of”. الأمر أشبه بالسؤال عن معرف العملية لهذه العملية؟ إذا استخدمنا الأمر بدون معلمات، فلن يفعل أي شيء. سيعيدك بصمت إلى موجه الأوامر. نحتاج إلى تحديد اسم العملية.

pidof bash


العثور على معرف عملية غلاف bash باستخدام الأمر pidof

pidof يخبرنا أن معرف عملية غلاف Bash هو 8304. يمكننا التحقق من ذلك باستخدام ps الأمر. كل ما علينا فعله هو الاتصال ps بدون أي معلمات. سيعرض تقريرًا عن العمليات التي يتم تشغيلها في الجلسة الحالية.

ps

إدراج العمليات باستخدام الأمر ps

لأن ps يقدم تقارير عن جميع العمليات التي يمكنه العثور عليها، والتي ستشمل نفسه، ويخبرنا بوجود bash عملية و ps عملية التشغيل. وكما نتوقع، bash العملية لها نفس معرف العملية pidof تم الإبلاغ عن ذلك.

إذا كان لديك أكثر من نافذة طرفية مفتوحة، pidof سأقدم تقريرا عنهم جميعا.

pidof bash


pidof يقدم تقريرًا عن عدة حالات من عمليات المطابقة

لاحظ أن معرفات العمليات مدرجة من الأعلى إلى الأدنى، أو بعبارة أخرى، من الأحدث إلى الأقدم.

ما لا يظهره هذا هو أنك قد لا تكون المالك لجميع هذه العمليات. pidof يجد جميع العمليات التي تحمل أسماء متطابقة، بغض النظر عن مالكها. دعنا ننظر بشكل أعمق من خلال توجيه الإخراج إلى grepنحن نستخدم -e (حدد جميع العمليات) و -f (القائمة الكاملة) الخيارات مع ps .

ps -ef | grep bash

استخدام ps وgrep لتحديد مالكي عمليات bash


اثنتان من عمليات bash تنتمي إلى المستخدم dave، والثالثة تنتمي إلى المستخدم mary.

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

pidof chrome

pidof العثور على العديد من معرفات العمليات لتطبيق واحد يحتوي على العديد من العمليات

افتراضيا، pidof التقارير عن كافة العمليات. إذا أردنا، يمكننا أن نطلب فقط أحدث تلك العمليات. -s يؤدي خيار (لقطة واحدة) هذا الأمر فقط.

pidof -s chrome

العثور على أحدث معرف عملية من تطبيق n يحتوي على معرفات عملية متعددة


لاستخدام kill أمر لقتل جميع العناصر يدويًا chrome ستكون العمليات مرهقة. إذا قمنا بجمع قائمة العمليات في متغير، فيمكننا تمرير هذا المتغير إلى kill الأمر. kill يمكن للأمر قبول معرفات PID متعددة في أمره، وبالتالي فإنه يقبل مدخلاتنا بكل سرور ويقتل جميع العمليات نيابة عنا.

pid=$(pidof chrome)

echo $pid

kill $pid

pidof chrome

تمرير متغير يحتوي على العديد من معرفات العمليات إلى أمر القتل

يقوم الأمر الأول بجمع الناتج من pidof ويعينها إلى متغيرنا، والذي نسميه pid.نحن لسنا بحاجة إلى echo نعرضه على الشاشة، ونحن نفعل ذلك فقط لإظهار ما يحتويه متغيرنا.

نمرر المتغير إلى kill الأمر، ثم استخدم pidof مرة أخرى للتحقق مما إذا كانت هناك أي عمليات Chrome متبقية. لقد تم قتلها جميعًا.


غرابة واحدة من pidof إنه لن يعيد معرف عملية البرنامج النصي shell. إنه يعيد معرف عملية البرنامج النصي shell. bash shell الذي يقوم بتشغيل البرنامج النصي. لرؤية shell الذي يقوم بتشغيل البرنامج النصي، نحتاج إلى استخدام -x خيار (البرامج النصية).

pidof -x sleep-loop.sh

ps -e | grep bash

العثور على معرف العملية (PID) لـ shell bash الذي يقوم بتشغيل البرنامج النصي shell

pidof يعيد معرف العملية الخاص بـ bash shell، و ps يُظهر لنا أن هناك قذيفتين تعملان. إحداهما هي القذيفة التي تعمل pidof الأمر، والآخر هو الغلاف الذي يقوم بتشغيل البرنامج النصي.

كيفية العثور على معرفات العمليات باستخدام الأمر pgrep في Linux

ال pgrep الأمر يعمل قليلا مثل pidof في الحصول على معرفات العمليات في Linux. ومع ذلك، فهو لا يعثر فقط على العمليات التي تتطابق تمامًا مع تلميح البحث، بل يعيد أيضًا معرفات العمليات لأي عمليات يحتوي اسمها على نص البحث.


فيما يلي مثال على جهاز كمبيوتر يعمل عليه برنامج Firefox.

pgrep firefox

pgrep fire

pgrep fox

pgrep refo

العثور على معرف عملية Firefox باستخدام أدلة بحث مختلفة

تعمل كل هذه الأوامر على العثور على عملية Firefox وإرجاع معرف العملية. ولكن إذا أدخلت الأمر:

pgrep refo

بمفرده، كيف يمكنك أن تعرف ما إذا كان pgrep قد وجد Fiإعادة التدويرx وليس، على سبيل المثال، شيطان يسمى pإصلاحدكتوراه؟

إذا قمت بإضافة -l عند استخدام خيار (اسم القائمة)، سيقوم pgrep بإدراج اسم العملية إلى جانب معرف العملية.

pgrep refo -l

العثور على معرف عملية غلاف bash باستخدام الأمر pidof


إذا كان هناك حالات متعددة لعملية المطابقة، فسيتم إدراجها جميعًا.

pgrep bash

العثور على معرف عملية غلاف bash باستخدام الأمر pidof

لاحظ أنه تم إدراجها بترتيب تصاعدي، وهو الترتيب المعاكس للإخراج من pidof. يتم سردها من أقدم عملية إلى أحدث عملية. كما رأينا مع pidofلا تخصك جميع العمليات المذكورة بالضرورة.

ال -u يتيح لك خيار (معرف المستخدم) البحث عن العمليات التي تطابق نص البحث، والتي يملكها المستخدم المحدد.

pgrep bash -u dave

العثور على معرف عملية غلاف bash باستخدام الأمر pidof


هذه المرة نرى ثلاث عمليات bash في النتائج. يتم استخدام العملية الأخرى بواسطة mary.

pgrep bash -u mary

العثور على معرف عملية غلاف bash باستخدام الأمر pidof

يمكننا ربط أسماء المستخدمين معًا في قائمة مفصولة بفاصلة.

pgrep bash -u dave,mary -l

العثور على معرف عملية غلاف bash باستخدام الأمر pidof

ويمكننا أن نطلب رؤية كافة العمليات لمستخدم معين.

pgrep -u dave -l

العثور على معرف عملية غلاف bash باستخدام الأمر pidof


لرؤية سطر الأوامر بالكامل، استخدم -a (القائمة الكاملة) الخيار.

pgrep -u dave -a

العثور على معرف عملية غلاف bash باستخدام الأمر pidof

كلمة عن ملكية PID

لا يمتلك المستخدم الجذر جميع عمليات النظام. بالطبع يمتلك العديد منها، ولكن ليس كلها. على سبيل المثال، يعمل هذا الأمر:

pgrep avahi-daemon

ولكن هذا الأمر يفشل.

pgrep -u root avahi-daemon

إنه يفشل لأنه root لا يمتلك هذه العملية. المالك الفعلي هو مستخدم النظام المسمى “avahi”. باستخدام اسم المستخدم الصحيح، يعمل الأمر.

pgrep -u avahi avahi-daemon

إنه أمر صغير يجب الحذر منه.


أضف تعليق