كيفية قتل العمليات من محطة طرفية Linux

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

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



أحيانًا يكون قتل عملية هو الطريقة الوحيدة للتخلص منها. وعلى الرغم من الاسم القاسي، فإن “قتل” عملية يعني ببساطة “إجبارها على التوقف”. وإليك كيفية القيام بذلك من سطر أوامر Linux أو macOS.


ما هي العملية؟

إن تشغيل البرامج مثل متصفح الويب الخاص بك، والعمليات الخلفية المرتبطة ببيئة سطح المكتب لديك، وخدمات نظام Linux، كلها عمليات.

يمكنك تقسيم العمليات إلى مجموعتين:

  • العمليات الأمامية هي تلك التي بدأها أو أطلقها المستخدم. قد تكون في نافذة طرفية، أو قد تكون تطبيقًا رسوميًا.
  • العمليات الخلفية هي كل العمليات التي يتم تشغيلها تلقائيًا ولا تتفاعل مع المستخدمين. ولا تتوقع هذه العمليات أي مدخلات من المستخدمين ولا تقدم لهم نتائج أو مخرجات. والعمليات الخلفية هي أشياء مثل الخدمات والشياطين.


إذا كانت العمليات الأمامية هي الجزء الأمامي من طاقم المسرح والممثلين، فإن العمليات الخلفية هي الفريق “خلف الكواليس”.

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

ماذا يفعل قتل العملية؟

إن “قتل” عملية ما يعني ببساطة “إجبار العملية على التوقف”. وقد يكون هذا ضروريًا إذا كانت العملية ترفض الاستجابة.

يوفر لينكس kill, pkill، و killall الأوامر التي تسمح لك بالقيام بذلك. يمكن استخدام هذه الأوامر مع أي نوع من العمليات، سواء كانت رسومية أو سطر أوامر، أو في المقدمة أو الخلفية.

أمر القتل

للإستخدام kill، يجب أن تعرف معرف العملية (PID) للعملية التي ترغب في إنهائها. ps يمكن استخدام الأمر للعثور على معرف العملية (PID) لعملية ما.


أن يكون لديه ps ابحث خلال جميع العمليات باستخدام -e خيار (جميع العمليات). توجيه الإخراج عبر less من المستحسن أن يكون هناك قدر كبير منه. النوع ps، مساحة،-e ، مساحة، | (حرف أنبوب)، مسافة أخرى ثم اكتب lessاضغط على Enter لتنفيذ الأمر.

ps -e | less

أمر ps في نافذة المحطة الطرفية

سيمنحك هذا قائمة عمليات تبدو مشابهة للقطة الشاشة أدناه. يمكنك البحث للأمام في less باستخدام / ويمكنك البحث للخلف باستخدام المفتاح ? مفتاح.

إخراج ps في نافذة أقل


للتركيز على العملية التي تهمك، قم بتوجيه الناتج من ps خلال grep وتحديد اسم العملية أو جزء من اسم العملية.

ps -e | grep shutter

تم تمرير أمر ps عبر grep للعثور على عملية الغالق

بمجرد تحديد معرف العملية التي ترغب في إنهائها، قم بتمريره إلى kill الأمر كمعلمة. لإنهاء الأمر shutter العملية التي تم تحديدها بواسطة الأمر السابق، استخدم هذا الأمر:

kill 2099

أمر القتل في نافذة المحطة الطرفية


ال kill إن الأمر عبارة عن قاتل صامت – فهو لا يقدم لك أي ردود فعل إذا كان ناجحًا.

كما أنه يعمل بنفس الطريقة لقتل العمليات على نظام macOS.

الأمر pkill

ال pkill يسمح لك الأمر بقتل عملية — أو عمليات — بالاسم. لست بحاجة إلى تحديد العملية بواسطة معرف العملية. لاستخدام pkill أنت تقدم مصطلح بحث pkill تُستخدم للتحقق من قائمة العمليات الجارية. يتم إنهاء العمليات المطابقة. لذا، يجب أن تتأكد من كتابة مصطلح البحث بشكل صحيح.

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


لنفترض أن هناك عملية تحتوي على “subq” في اسمها. سنستخدم ps -u dave | grep الأمر لإلقاء نظرة خاطفة خلف الستار. يمكنك أن ترى أن “subq” سوف يتطابق مع هذه العملية وتلك العملية وحدها. كان ذلك فقط حتى تتمكن من رؤية الاسم الكامل للعملية.

ps -u dave | grep subq

أمر ps في نافذة المحطة الطرفية

لنفترض أن المستخدم لم يفعل ذلك؛ كل ما يعرفه هو أن اسم العملية يحتوي على السلسلة الفرعية “subq”. pgrep للتحقق من وجود تطابق واحد فقط لمصطلح البحث. ثم يستخدمون مصطلح البحث هذا مع pkill.

pgrep subq

pkill subq


pgrep و pkill في نافذة المحطة الطرفية

يمكنك استخدام pkill لقتل عدة عمليات في وقت واحد. هنا يقوم المستخدم بتشغيل pgrep للتحقق من عدد العمليات التي أطلقها Chrome. يستخدمون pkill لقتلهم جميعا. ثم يتحققون من ذلك pgrep لقد تم إزالتهم جميعا.

pgrep chrome

pkill chrome

pgrep chrome

pgrep و pkill في نافذة المحطة الطرفية

إذا كانت هناك عدة عمليات بنفس الاسم قيد التشغيل، ولكنك لا تريد قتلها جميعًا، فيمكنك استخدام pgrep مع -f (سطر الأوامر) خيار لتحديد أي عملية هي أي عملية. مثال بسيط سيكون اثنين ping العمليات. تريد قتل إحداهما ولكن ليس الأخرى. يمكنك استخدام أسطر الأوامر الخاصة بهما للتمييز بينهما. لاحظ استخدام علامات الاقتباس لتغليف معلمة سطر الأوامر.


pgrep -f "ping 192.168.4.22"

pkill -f "ping 192.168.4.22"

pgrep pkill باستخدام سطر أوامر ping

أمر القتل

تحذير:في أنظمة التشغيل Solaris وOpenIndiana، killall سيؤدي الأمر إلى قتل جميع العمليات التي تنتمي إليك. إذا كنت مستخدمًا جذرًا أو إذا كنت قد أصدرت sudo killall سوف تقوم بإعادة تشغيل جهاز الكمبيوتر الخاص بك! أثناء البحث عن هذه المقالة، تم تأكيد هذا السلوك باستخدام أحدث إصدار من OpenIndiana Hipster 2018.10.

ال killall يأمر يعمل بطريقة مماثلة الى pkill الأمر ولكن مع اختلاف محدد. فبدلاً من تمرير مصطلح بحث إلى الأمر، يجب عليك توفير اسم العملية الدقيق.

لا يمكنك توفير تطابق جزئي لاسم العملية؛ بل يجب عليك توفير اسم العملية بالكامل، كما هو موضح:


killall shutt

killall shutter

أمر killall في نافذة المحطة الطرفية

ال -y يتيح لك خيار (أصغر من) إيقاف العمليات التي كانت قيد التشغيل لمدة أقل من فترة محددة. يتم تحديد الفترة بالأرقام متبوعة بإحدى هذه الوحدات:

  • ثانية (ثانية)
  • م (دقائق)
  • ح (ساعات)
  • د (أيام)
  • و(أسابيع)
  • م (أشهر، ملاحظة، حرف كبير “م”)
  • ي (سنوات)

لقتل عملية تسمى ana الذي تم إطلاقه للتو وترك أي حالات أقدم من ana أثناء التشغيل، يمكنك استخدام المعلمات التالية مع killall، إذا قمت بالرد خلال دقيقتين:

killall -y 2m ana

قتل الجميع مع خيار أصغر من


ال -o يتيح لك خيار (أقدم من) قتل العمليات التي كانت قيد التشغيل لفترة أطول من فترة زمنية محددة. سيؤدي هذا الأمر إلى قتل جميع العمليات التي كانت قيد التشغيل لفترة أطول من فترة زمنية محددة. ssh الاتصالات التي تعمل منذ أكثر من يوم:

killall -o 1d sshd

أمر killall في نافذة المحطة الطرفية

هل يمكنك قتل أي عملية؟

ستتيح لك هذه الأوامر تحديد العمليات الخاطئة وإنهائها بدقة وأمان بشكل صحيح. ومع ذلك، يمكنك أيضاً إن تشغيل الزناد بسرعة أمر ممكن تمامًا، ومن الممكن إنهاء عملية لا ينبغي عليك إنهاؤها.

كن حذرًا دائمًا. أولاً، تأكد من أن العملية التي توشك على إنهائها هي العملية التي تريدها حقًا. ثانيًا، تحقق مرة أخرى – كن حذرًا وتأكد من أن العملية المستهدفة هي العملية التي تريد إنهاؤها. تابع إنهاء العملية بمجرد رضاك.


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

أضف تعليق