روابط سريعة
النقاط الرئيسية
- إن قتل عملية يعني ببساطة إجبارها على التوقف، وقد يكون ذلك ضروريًا عندما تكون العملية غير مستجيبة أو لا تتصرف بشكل جيد.
- يحتوي 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
سيمنحك هذا قائمة عمليات تبدو مشابهة للقطة الشاشة أدناه. يمكنك البحث للأمام في less
باستخدام /
ويمكنك البحث للخلف باستخدام المفتاح ?
مفتاح.
للتركيز على العملية التي تهمك، قم بتوجيه الناتج من ps
خلال grep
وتحديد اسم العملية أو جزء من اسم العملية.
ps -e | grep shutter
بمجرد تحديد معرف العملية التي ترغب في إنهائها، قم بتمريره إلى 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
لنفترض أن المستخدم لم يفعل ذلك؛ كل ما يعرفه هو أن اسم العملية يحتوي على السلسلة الفرعية “subq”. pgrep
للتحقق من وجود تطابق واحد فقط لمصطلح البحث. ثم يستخدمون مصطلح البحث هذا مع pkill
.
pgrep subq
pkill subq
يمكنك استخدام pkill
لقتل عدة عمليات في وقت واحد. هنا يقوم المستخدم بتشغيل pgrep
للتحقق من عدد العمليات التي أطلقها Chrome. يستخدمون pkill
لقتلهم جميعا. ثم يتحققون من ذلك pgrep
لقد تم إزالتهم جميعا.
pgrep chrome
pkill chrome
pgrep chrome
إذا كانت هناك عدة عمليات بنفس الاسم قيد التشغيل، ولكنك لا تريد قتلها جميعًا، فيمكنك استخدام pgrep
مع -f
(سطر الأوامر) خيار لتحديد أي عملية هي أي عملية. مثال بسيط سيكون اثنين ping
العمليات. تريد قتل إحداهما ولكن ليس الأخرى. يمكنك استخدام أسطر الأوامر الخاصة بهما للتمييز بينهما. لاحظ استخدام علامات الاقتباس لتغليف معلمة سطر الأوامر.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
أمر القتل
تحذير:في أنظمة التشغيل Solaris وOpenIndiana، killall
سيؤدي الأمر إلى قتل جميع العمليات التي تنتمي إليك. إذا كنت مستخدمًا جذرًا أو إذا كنت قد أصدرت sudo killall
سوف تقوم بإعادة تشغيل جهاز الكمبيوتر الخاص بك! أثناء البحث عن هذه المقالة، تم تأكيد هذا السلوك باستخدام أحدث إصدار من OpenIndiana Hipster 2018.10.
ال killall
يأمر يعمل بطريقة مماثلة الى pkill
الأمر ولكن مع اختلاف محدد. فبدلاً من تمرير مصطلح بحث إلى الأمر، يجب عليك توفير اسم العملية الدقيق.
لا يمكنك توفير تطابق جزئي لاسم العملية؛ بل يجب عليك توفير اسم العملية بالكامل، كما هو موضح:
killall shutt
killall shutter
ال -y
يتيح لك خيار (أصغر من) إيقاف العمليات التي كانت قيد التشغيل لمدة أقل من فترة محددة. يتم تحديد الفترة بالأرقام متبوعة بإحدى هذه الوحدات:
- ثانية (ثانية)
- م (دقائق)
- ح (ساعات)
- د (أيام)
- و(أسابيع)
- م (أشهر، ملاحظة، حرف كبير “م”)
- ي (سنوات)
لقتل عملية تسمى ana
الذي تم إطلاقه للتو وترك أي حالات أقدم من ana
أثناء التشغيل، يمكنك استخدام المعلمات التالية مع killall
، إذا قمت بالرد خلال دقيقتين:
killall -y 2m ana
ال -o
يتيح لك خيار (أقدم من) قتل العمليات التي كانت قيد التشغيل لفترة أطول من فترة زمنية محددة. سيؤدي هذا الأمر إلى قتل جميع العمليات التي كانت قيد التشغيل لفترة أطول من فترة زمنية محددة. ssh
الاتصالات التي تعمل منذ أكثر من يوم:
killall -o 1d sshd
هل يمكنك قتل أي عملية؟
ستتيح لك هذه الأوامر تحديد العمليات الخاطئة وإنهائها بدقة وأمان بشكل صحيح. ومع ذلك، يمكنك أيضاً إن تشغيل الزناد بسرعة أمر ممكن تمامًا، ومن الممكن إنهاء عملية لا ينبغي عليك إنهاؤها.
كن حذرًا دائمًا. أولاً، تأكد من أن العملية التي توشك على إنهائها هي العملية التي تريدها حقًا. ثانيًا، تحقق مرة أخرى – كن حذرًا وتأكد من أن العملية المستهدفة هي العملية التي تريد إنهاؤها. تابع إنهاء العملية بمجرد رضاك.
إذا أنهيت عملية ما عن طريق الخطأ، فهذا لا يعني نهاية العالم. النتيجة الأكثر ترجيحًا هي أن يحدث خطأ ما وتضطر إلى إعادة تشغيل جهاز الكمبيوتر، أو قد تفقد العمل الذي قمت به في البرنامج المرتبط بالعملية التي أنهيتها.