Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

مراقبة العمليات في لينكس

  • مفهوم مراقبة العمليات في لينكس
  • أدوات مراقبة العمليات في لينكس
  • معرفة جميع أرقام العمليات التابعة لبرنامج محدد في لينكس
  • أوامر إيقاف العمليات في لينكس

مفهوم مراقبة العمليات في لينكس

مراقبة العمليات ( Processes monitoring ) يقصد بها معرفة العمليات النشطة التي تعمل حالياً في النظام بالإضافة إلى الموارد المستخدمة في الجهاز.

مراقبة العمليات النشطة في النظام تعد جزءاً مهماً من إدارته فهي تتيح إيقاف أو التحكم في سير العمليات عند الحاجة. مثلاً في حال اكتشاف استهلاك كبير للموارد أو في حال حدوث تعليق ستتمكن من معرفة ما هو سبب ذلك و اتخاذ القرار المناسب لحل المشكلة.

في لينكس، يمكنك مراقبة العمليات النشطة باستخدام موجّه الأوامر أو الأدوات الرسومية.

في هذا الدرس سنشرح كيفية استعمال الأوامر التي تتيح مراقبة العمليات النشطة بالإضافة إلى كيفية تشغيل و إيقاف العمليات.

أدوات مراقبة العمليات في لينكس

يوجد العديد من الأدوات التي يمكنك استعمالها لمراقبة العمليات النشطة من موجه الأوامر، سنتطرق لأهمها.

عند عرض العمليات الجارية قد يظهر لك عدد كبير جداً من العمليات و هذا الأمر طبيعي لأنه أثناء عمل النظام يكون هناك خدمات كثيرة تعمل في الخلفية و هي بدورها تنفذ عمليات في النظام، كما أنّ البرنامج الواحد قد يكون يستعمل عدة عمليات تعمل مع بعضها البعض بشكل متوازي.


الأداة ps

تستخدم هذه الأداة لعرض قائمة بالعمليات الجارية على النظام.

1- يمكنك استخدام الأمر ps aux لعرض جميع العمليات الجارية في النظام كما يلي.

Linux Terminal

root@fedora:~$ ps aux
USER      PID  %CPU  %MEM     VSZ    RSS  TTY  STAT  START  TIME  COMMAND
root        1   0.0   0.1   62800  25780    ?    Ss  05:47  0:02  /usr/lib/systemd/systemd --switched-root --system --deserialize=44 rhgb
root        1   0.0   0.1   62800  25780    ?    Ss  05:47  0:02  /usr/lib/systemd/systemd --switched-root --system --deserialize=44 rhgb
root        2   0.0   0.0       0      0    ?     S  05:47  0:00  [kthreadd]
root        3   0.0   0.0       0      0    ?     S  05:47  0:00  [pool_workqueue_release]
...
systemd+  835   0.0   0.1   31648  17508    ?    Ss  05:47  0:02  /usr/lib/systemd/systemd-resolved
...

2- يمكنك استخدام الأمر ps -u <username> لعرض جميع العمليات الجارية من قبل مستخدم محدد.
فيما يلي قمنا بعرض جميع العمليات الجارية الخاصة بالمستخدم root فقط.

Linux Terminal

root@fedora:~$ ps -u root
USER  PID  %CPU  %MEM    VSZ    RSS  TTY  STAT  START  TIME  COMMAND
root    1   0.0   0.1  62800  25780    ?    Ss  05:47  0:02  /usr/lib/systemd/systemd --switched-root --system --deserialize=44 rhgb
root    1   0.0   0.1  62800  25780    ?    Ss  05:47  0:02  /usr/lib/systemd/systemd --switched-root --system --deserialize=44 rhgb
root    2   0.0   0.0      0      0    ?     S  05:47  0:00  [kthreadd]
root    3   0.0   0.0      0      0    ?     S  05:47  0:00  [pool_workqueue_release]
...

3- يمكنك استخدام الأمر ps aux | grep <application> لعرض جميع العمليات الجارية من قبل برنامج محدد.
فيما يلي قمنا بعرض جميع العمليات الجارية الخاصة بمتصفح firefox فقط.

Linux Terminal

root@fedora:~$ ps aux | grep firefox
root  4049  5.7  4.5  21196376  739580  ?  Ssl  05:50  20:40  /usr/lib64/firefox/firefox
root  4129  0.0  0.2  238604     45892  ?   Sl  05:50   0:00  /usr/lib64/firefox/firefox -contentproc -parentBuildID 20241001070119 -prefsLen 32515 -prefMapSize 257253 -appDir /usr/lib64/firefox/browser {1436ccd9-889a-445a-aab4-f5a8f56a9adc} 4049 true 1 socket
root  4160  0.0  0.9  2710524   149500  ?   Sl  05:50   0:08  /usr/lib64/firefox/firefox -contentproc -isForBrowser -prefsLen 32640 -prefMapSize 257253 -jsInitLen 234840 -parentBuildID 20241001070119 -greomni /usr/lib64/firefox/omni.ja -appomni /usr/lib64/firefox/browser/omni.ja -appDir /usr/lib64/firefox/browser {b7a8c01c-32a1-48af-954d-6bf346744ceb} 4049 true 2 tab
...

الأداة top

تستخدم هذه الأداة لعرض العمليات الحية مع تحديث البيانات بشكل مستمر.
فيما يلي قمنا باستخدام الأمر top لعرض جميع العمليات الجارية في النظام.

Linux Terminal

root@fedora:~$ top
Tasks: 272 total, 1 running, 271 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.5 us, 4.5 sy, 0.0 ni, 88.6 id, 0.0 wa, 0.0 hi, 2.3 si, 0.0 st
MiB Mem : 15853.9 total, 4749.9 free, 4725.7 used, 7670.3 buff/cache
MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 11128.2 avail Mem

  PID  USER  PR  NI     VIRT     RES     SHR  S  %CPU  %MEM    TIME+ COMMAND               
 3098  root  -2   0  3191776  370356  257692  S  18.2   2.3  3:17.26 kwin_wayland
 5334  root  20   0  2802028  201560  123240  S   9.1   1.2  5:25.59 Isolated Web Co
27749  root  20   0   231932    5404    3228  R   9.1   0.0  0:00.01 top
    1  root  20   0    62800   25780   11144  S   0.0   0.2  0:03.08 systemd
    2  root  20   0        0       0       0  S   0.0   0.0  0:00.01 kthreadd
    3  root  20   0        0       0       0  S   0.0   0.0  0:00.00 pool_workqueue_release
...

فيما يلي الإختصارات التي يمكنك استعمالها للتعامل مع الأداة:

  • لفرز العمليات حسب استهلاك المعالج ( CPU ) أنقر على الزرين P + Shift.
  • لفرز العمليات حسب استهلاك الذاكرة ( RAM ) أنقر على الزرين M + Shift.
  • للخروج من الأداة أنقر على الزرين C + Ctrl.

تحليل معلومات الأداة

فيما يلي معنى الأعمدة التي تظهر لك.

العمود معناه
PID رقم المعرّف الموحّد الخاص بكل عملية، تستطيع استخدامه لتحديد أي عملية تريد التعامل معها أو التحكم بها مثل عرض المزيد من تفاصيل عنها أو إنهاءها.
USER إسم المستخدم الذي قام بتشغيل العملية، يساعد في تحديد المسؤول عن العملية.
PR أولوية تنفيذ العملية في النواة، أي مدى أهمية العملية بالنسبة للنظام مع الإشارة إلى أن القيم الأقل تعني أولوية أعلى مما يسمح للعملية بالحصول على المزيد من وقت وحدة المعالجة المركزية.
NI القيمة اللطيفة تسمح للمستخدمين بتعديل أولوية تنفيذ العمليات، العمليات ذات القيم "اللطيفة" السالبة ستحصل على المزيد من وقت وحدة المعالجة المركزية، مما قد يؤدي إلى إبطاء العمليات الأخرى. العمليات ذات القيم "اللطيفة" الموجبة ستتنازل عن المزيد من وقت وحدة المعالجة المركزية، مما يسمح للعمليات الأخرى بالعمل بشكل أسرع.
VIRT مقدار الذاكرة الافتراضية التي تستخدمها العملية. يشمل الذاكرة المادية ( RAM ) و الذاكرة المبدلة ( SWAP ) و هذا يساوي إجمالي الذاكرة التي يمكن للعملية الوصول اليها.
RES مقدار الذاكرة المادية التي تستخدمها العملية. هذا هو الجزء الفعلي من الذاكرة الذي تستخدمه العملية في ذاكرة الوصول العشوائي ( RAM ).
SHR مقدار الذاكرة التي تشاركها العملية مع عمليات أخرى.
S حالة العملية و التي قد تكون إحدى الحالات التالية:
  • R تعني قيد التشغيل، حيث تكون العملية تعمل أو جاهزة للعمل.
  • S تعني نائمة، حيث تكون العملية تنتظر حدثاً معين حتى تعود للإكمال.
  • D تعني نائمة غير قابلة للمقاطعة، حيث تكون العملية تنتظر مدخلات أو مخرجات معينة.
  • R تعني قيد التشغيل، حيث تكون العملية تعمل أو جاهزة للعمل.
  • Z تعني زومبي، حيث تكون العملية انتهت و لكنها لا تزال موجودة في جدول العمليات.
  • T تعني متوقفة، حيث تكون العملية متوقفة عن العمل.
%CPU نسبة استخدام العملية لوحدة المعالجة المركزية.
%MEM نسبة استخدام العملية لذاكرة الوصول العشوائية ( RAM ).
+TIME مجموع الوقت الذي استهلكته العملية من معالج الحاسوب.
COMMAND الأمر الذي تم استخدامه لتشغيل العملية.

للإفادة، يوجد أداة أكثر تقدماً من top إسمها htop استعمالها أكثر سهولة حيث يمكنك التعامل معها بواسطة الفأرة كما أنها تعرض المعلومات بشكل أبسط و أوضح. يمكنك تحميلها و استخدامها بدلاً منها.

معرفة جميع أرقام العمليات التابعة لبرنامج محدد في لينكس

البرنامج الواحد قد يتضمن مجموعة من العمليات التي تعمل في ذات الوقت، مثلاً كل تبويب ( Tab ) مفتوح في المتصفح عبارة عن عملية.

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

Linux Terminal

root@fedora:~$ pid firefox
11079 10999 10996 10926 10911 10901 10856 10819 10760 10739 10661

أوامر إيقاف العمليات في لينكس

من الأسباب التي قد تجعلك تحتاج لإيقاف عملية بشكل يدوي تسببها بتعليق للنظام، أو لأنها تستهلك موارد كثيرة، أو لأنك تعتقد أنها تسبب مشكلة أمنية.

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


أمثلة على إيقاف العمليات

1- في المثال التالي قمنا باستخدام الأمر pkill لإيقاف جميع العمليات التابعة لمتصفح firefox عن العمل.

Linux Terminal

root@fedora:~$ pkill firefox

2- في المثال التالي قمنا باستخدام الأمر kill -9 لإيقاف العملية التي تملك رقم معرّف يساوي 6352.

Linux Terminal

root@fedora:~$ kill -9 6352