إدارة العمليات في نظام Linux قد تبدو مربكة لمسؤول النظام الجديد في البداية. ولكن مع شرح واستعراض بسيطين، ستتعلم كيفية العثور على العمليات في Linux وإنهاءها مسألة تعتمد فقط على استخدام أدوات سطر الأوامر مثل ps
و kill
.
في هذا المقال، ستتعلم الأوامر الخاصة بالبحث عن العمليات الجارية والمعطلة، وإنهاء العمليات الجارية، والعثور على العمليات الخلفية، والمزيد على أي نظام تشغيل Linux.
بحلول نهاية المقال، ستكون قادرًا على إدارة العمليات استنادًا إلى أرقام التعريف الفريدة للعمليات (PIDs) من سطر الأوامر كمحترف Linux. استمر في القراءة لتتعلم كل شيء عن أوامر إدارة العمليات في Linux!
المتطلبات الأولية
سيكون هذا المقال مدرسة حول كيفية إدارة العمليات في Linux. إذا كنت ترغب في التفاعل، ستحتاج إلى ما يلي:
- A Linux host, which can be a virtual machine or a physical machine.
- لتجربة أمثلة PowerShell، قم بتثبيت PowerShell 7.1.1 على مضيف Linux.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
توزيعة Linux التي تختارها هي اختيارك. سيعتمد هذا المقال على Ubuntu 20.04 LTS. ومع ذلك، فإن الأوامر موحدة لنظام التشغيل Linux.
هل أنت مستعد للبدء؟ رائع، لنبدأ.
إدارة العمليات في Linux
بمناسبة، قد تصادف حالة حيث تحتاج إلى إيقاف تشغيل عملية قيد التشغيل على نظام Linux. كمثال، قد يكون لديك سكريبت باش يعمل وفقًا لجدول زمني. تم تكوين هذا السكريبت للتشغيل كمستخدم آخر عبر وظيفة cron (جدول مجدول عمليات Linux).
في بعض الأحيان، يؤدي هذا السكريبت إلى إنشاء عمليات غير صحيحة يمكن أن تتسبب في فشل السكريبت. كيف يمكنك إيقاف تشغيل تلك العمليات الغير صحيحة دون إعادة تشغيل النظام أو إيقاف السكريبت؟
في الأقسام التالية، ستقوم بشرح الأوامر المستخدمة لتحديد موقع وإنهاء أو قتل العمليات على نظام Linux. ستتطور كل قسم على القسم السابق. ستتعرف على أوامر ps
، top
، pgrep
، kill
، و pkill
جميعها مدمجة في Linux.
كمكافأة، يتم تضمين أوامر مكافئة في PowerShell Get-Process
و Stop-Process
إذا لم تكن الأوامر الأصلية في Linux هي ذوقك.
أدوات لتحديد المواقع الخاصة بالعمليات
قبل قتل عملية، يجب عليك تحديد العملية الصحيحة المستهدفة. يسمح رقم التعريف الفريد (PID) بالاستهداف الدقيق. تابع القراءة لتعلم كيفية تحديد العمليات الصحيحة للإنهاء.
استخدام أمر ps
لعرض معلومات العملية
الأمر ps
أو حالة العملية يعرض معلومات تتعلق بالعمليات النشطة على نظام Linux. يمكنك تحديد عملية تعمل وحتى عمليات الخلفية باستخدام ps
.
سيقوم الأمر ps
، افتراضيًا، بعرض جميع العمليات لـ تحديد معرف المستخدم الفعّال (EUID) للمستخدم الحالي. تشغيل الأمر ps
، كما هو موضح أدناه، سيُعيد كل عملية تعمل يمكن للمستخدم إنهاءها.

bkindle
.البحث عن معلومات عملية موسعة باستخدام أمر top
ماذا لو كنت تريد العثور على معلومات تتجدد باستمرار حول العمليات الجارية ومقاييس النظام، في هذه الحالة، يمكنك استخدام الأمر top
. على عكس ps
، يقوم الأمر top
بتحديث معلومات العملية على الشاشة على فترة زمنية محددة.
عند تشغيل الأمر top
، سترى أكثر من معرّف عملية. بالإضافة إلى تفاصيل العملية، تتضمن نسب الـ CPU والذاكرة، قيم النايس (أولوية تسلسل العملية CPU)، وأولوية العملية (PR) المُعينة بواسطة نواة Linux.
بالنسبة لمسؤولي النظام الجديدة أو المتمرسة، يعتبر الأمر top
غالبًا الأداة الأساسية لإدارة الموارد والعمليات النظامية الحيوية. كما هو موضح أدناه، يعرض إخراج الأمر top
معلومات عملية أكثر من الأمر ps
بما في ذلك مقاييس النظام الشاملة.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
هو نسخة محسّنة من top
تتضمّن تحسينات متعددة، مثل إخراج الطرفية الملوّن.
لنفترض أنك ترغب في فحص الذاكرة أو موارد وحدة المعالجة المركزية التي يستهلكها عملية. في هذه الحالة، يمكنك استخدام مفتاح p
في top
كما هو موضّح أدناه.

ربما تحتاج إلى عرض جميع العمليات الجارية لاسم مستخدم معيّن. تقدّم الأمر top
مفتاح u
لعرض عمليات مستخدم محدد فقط. كما هو موضّح في المثال أدناه، يتم عرض معرّفات العملية (PIDs) التي تتطابق فقط مع معرّف المستخدم bkindle
.

top
command displaying only processes for the user bkindle
.العثور على معرّفات العملية المحدّدة باستخدام أمر pgrep
كان الأمر أصلاً لنظام التشغيل Solaris، وتم توطين pgrep
للاستخدام مع Linux. بجمع قوة البحث من أمر grep
وإدارة العمليات من ps
، يوفر pgrep
مرونة في العثور على العملية الدقيقة المستهدفة.
على الرغم من أن ps
يعرض معلومات أكثر، فإن pgrep
مصمم لإعادة معرّفات العملية فقط. يساعد pgrep
في العثور على العملية باستخدام العديد من معلمات البحث المتاحة. في المثال التالي، يُظهر pgrep
البحث عن أي عملية تطابق vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.بالمثل، حدد معرف المستخدم باستخدام التبديل u
لاسترجاع عمليات مرتبطة فقط بهذا المستخدم المحدد. كما هو موضح أدناه، يتم إرجاع معرف واحد فقط للعملية vmtoolsd
للمستخدم bkindle
.

vmtoolsd
process associated with the user bkindle
.البحث عن العمليات باستخدام Get-Process
في PowerShell في نظام التشغيل Linux
تعمل الأوامر النموذجية لنظام Linux بشكل رائع، ولكن هل تعلم أن PowerShell قادر على إدارة عمليات Linux أيضًا؟ يعمل الأمر Get-Process
بنفس طريقة عمل أمر ps
في Linux ويعيد معلومات العملية. على سبيل المثال، ربما تحتاج إلى العثور على جميع العمليات الجارية التي يقوم بها المستخدم الحالي، bkindle
. كما هو موضح أدناه، ابحث عن جميع معرفات العملية (التي يُعرف بـ “المعرف” بواسطة Get-Process
) للمستخدم bkindle
.

Get-Process
cmdlet.ذات الصلة: كيفية استخدام Where-Object في PowerShell لتصفية كل الأشياء
بعد أن تعلمت كيفية تحديد مواقع العمليات المختلفة، تابع القراءة لاكتشاف جميع الطرق المتاحة لإنهاء أو قتل عملية في Linux!
قتل العمليات باستخدام أوامر القتل في Linux
في الأقسام السابقة، تعلمت كيفية تحديد معرف العملية التي تريد إرسال إشارة قتل إليها باستخدام أوامر Linux وPowerShell الأصلية. ستشرح الأقسام التالية كيفية استخدام برامج kill
و pkill
، والإشارات المرتبطة بها، والتبديلات في سطر الأوامر.
إشارات Linux وإدارة العمليات
الإشارات هي الطريقة التي يستخدمها نظام Linux للتواصل مع العمليات التي تعمل في نظام التشغيل. الإشارات الثلاث الأساسية التي يستخدمها أمر kill
لإنهاء العمليات هي:
- 1 (SIGHUP) – تنهي البرامج التفاعلية وتجعل السبايا (الخدمات الخلفية) تقرأ ملفات التكوين التي تستخدمها العملية.
- 9 (SIGKILL) – تجبر العملية على الخروج دون القيام بمهام إغلاق متميزة.
- 15 (SIGTERM) – تسمح للعملية بالانتهاء برفق، مثل إغلاق الملفات المفتوحة عند الانتهاء. هذه الإشارة الافتراضية المستخدمة عند عدم تحديد رقم عند استخدام أمر kill.
في حين أن هذا المقال يركز فقط على الإشارات الثلاث الرئيسية المستخدمة لإيقاف العمليات، هناك مجموعة من الإشارات المتاحة بإجمالي 64. استخدم
kill -l
للحصول على قائمة الإشارات وأرقامها المقابلة.
الآن بعد أن فهمت الإشارات الثلاث الرئيسية المستخدمة في إنهاء العملية، تعلم كيفية قتل عملية في الأقسام التالية.
استخدام أمر kill
لإنهاء عملية
في هذا المثال التالي، ستستخدم أمر kill
. تخيل للحظة أنك تقوم بتشغيل مثيل PowerShell، يسمى pwsh
، والمُعرّف برقم PID هو 22687. طريقة واحدة لإنهاء هذه العملية موضحة أدناه.
- استخدم
pgrep pwsh
لتحديد مُعرّف PID لعمليةpwsh
، المستخدم في أمرkill
. - Use
kill -s TERM 22687
لإنهاء عمليةpwsh
بشكل سلس. يقوم أمرTERM
بتعيين إشارة 15 (SIGTERM) ويُشير إليه باستخدام المعاملs
في أمرkill
. - استخدم اختيارك من بين
top
،ps
، أوpgrep
للتحقق من أن رقم العملية (PID) لم يعد مدرجًا.
فيما يلي مثال على العملية أعلاه من خلال واجهة سطر الأوامر bash في Ubuntu 20.04 LTS.

kill
and associated commands to terminate the pwsh
process.سيؤدي أمر
killall
إلى إنهاء جميع العمليات استنادًا إلى الاسم بدلاً من رقم العملية (PID)، وهو ما قد يجعل هذا الأمر مدمرًا إذا تم استخدامه بدون حذر. إذا اخترت استخدام هذا الأمر، استخدم خيارi
لجعل الأمر يطلب التأكيد.
إنهاء العمليات بواسطة الاسم باستخدام pkill
قد لاحظت أن أمر kill
يعمل فقط برقم العملية (PID). يمكن أن يجعل ذلك إنهاء العملية عملية معقدة تتكون من عدة خطوات. يقوم أمر pkill
، الذي يتم تضمينه في حزم procps و procps-ng، بإنهاء عملية بناءً على اسم بحث.
وظيفيًا، يعمل أمر pkill
كغلاف حول برنامج pgrep
. يرسل أمر pkill
إشارة محددة إلى كل عملية تم العثور عليها بدلاً من سرد معرفات العمليات في الطرفية. يختلف pkill
عن kill
في أن pkill
يمكنه استخدام اسم العملية فقط، لا معرف العملية.
أمر
pkill
غير متوفر، بشكل افتراضي، في Ubuntu 20.04 LTS. يجب عليك تنزيل وتثبيت التطبيق. للقيام بذلك، قم بتشغيلsudo apt install mcollective-plugins-process -y
.
لإنهاء عملية باستخدام pkill
، قم باتباع الخطوات التالية:
- استخدم
ps
للتحقق مما إذا كان تطبيق nano (محرر نصوص سطر الأوامر) قيد التشغيل حاليًا. هذه الخطوة اختيارية، ولكنها تشكل فحصًا للسلامة قبل إنهاء عملية. - استخدم
pkill -9 nano
لإنهاء تطبيق nano بقوة.
فيما يلي مثال على العملية أعلاه من طرفية bash في Ubuntu 20.04 LTS.

pkill
command to forcefully terminate the nano process.قتل عملية باستخدام أمر Top
عند تشغيل أمر top
لعرض العمليات الجارية، يمكنك قتل عملية معينة باستخدام مفتاح k. سترى رسالة تفاعلية تطلب معرف العملية التي تريد قتلها.
كما هو موضح أدناه، قم بتشغيل أمر top
واضغط k. أدخل معرف العملية التي تريد قتلها، واضغط على مفتاح Enter لإنهاء معرف العملية على الفور.

top
to specify a process to terminate using the k keystroke.بعد ذلك، تعلم طريقة بديلة أخرى للأوامر الأصلية في Linux باستخدام أمر PowerShell Stop-Process
!
استخدام أمر PowerShell Stop-Process
لإنهاء عملية
إذا لم تكن الأوامر الأصلية في Linux هي نمطك، فإن PowerShell لديها ما تحتاج إليه! تمامًا كما هو الحال مع أمر kill
، يمكنك إنهاء العمليات باستخدام الأمر Stop-Process
في Linux. مرة أخرى، تخيل أنك تقوم بتشغيل عملية PowerShell pwsh
.
- ابحث عن معرف العملية باستخدام
Get-Process -ProcessName 'pwsh'
وقم بتسجيل معرفات العمليات لإنهائها. - استخدم
Stop-Process -Id 29992،30014
لإنهاء العمليات المتعددة المسترجعة. - استخدم
Get-Process -ProcessName 'pwsh'
وتحقق من معرفات العمليات،29992
و30014
لم يعد مدرجين، مما يعني أنه تم إنهاؤها.
يمكنك أيضًا استخدام
Get-Process
وطريقةkill
لإنهاء عملية واحدة أو متعددة:(Get-Process -Id [PID]).Kill()
أو(Get-Process -Id [PID1,2,3,4]).Kill()
.تمارس الحذر عند استخدام معلمة
ProcessName
. باستخدام هذه المعلمة يتصرف بشكل مشابه لأمرkillall
، وسيتم إنهاء جميع العمليات المطابقة للاسماء المقدمة.
فيما يلي مثال على العملية أعلاه من محطة الطرفية bash على Ubuntu 20.04 LTS.

Stop-Process
to kill processes in Linux.الخطوات التالية
يجب أن تعرف الآن العديد من الطرق للعثور على العمليات وإنهائها في نظام التشغيل لينكس! لتحديك التالي، جرب إنهاء العمليات عن بُعد باستخدام اتصالات SSH أو عن طريق إنهاء العمليات التي قد تكون قيد التشغيل في حاويات.
ذات صلة: شخص من عالم ويندوز في عالم لينكس: إعداد SSH في لينكس