أحيانًا يكون قتل عملية ما هو الطريقة الوحيدة للتخلص منها. على الرغم من الاسم القاسي ، فإن “قتل” العملية يعني فقط “إجبارها على التوقف”. إليك كيفية القيام بذلك من سطر الأوامر في Linux أو macOS.
ما هي العملية؟
يعد تشغيل البرامج مثل المستعرض الخاص بك والعمليات الخلفية المرتبطة ببيئة سطح المكتب وخدمات نظام Linux كلها عمليات.
يمكنك تقسيم العمليات إلى مجموعتين:
عمليات المقدمة هي تلك التي بدأها المستخدم أو أطلقها. يمكن أن تكون في نافذة طرفية ، أو يمكن أن تكون تطبيقًا رسوميًا.عمليات الخلفية هي أي عملية تبدأ تلقائيًا وليس لها تفاعل من المستخدم. إنهم لا يتوقعون مدخلات من المستخدمين ، ولا يقدمون النتائج أو المخرجات لهم. عمليات الخلفية هي أشياء مثل الخدمات والشياطين.
إذا كانت عمليات المقدمة هي واجهة طاقم المسرح والممثلين ، فإن عمليات الخلفية هي فريق وراء الكواليس “خلف الكواليس”.
عندما تتصرف العمليات بشكل غير صحيح أو تتعطل ، يمكن أن تستغرق وقتًا طويلاً جدًا لوحدة المعالجة المركزية ، أو تستهلك ذاكرة الوصول العشوائي الخاصة بك ، أو تدخل حلقة حسابية ضيقة وتتوقف عن الاستجابة. قد ترفض التطبيقات الرسومية الاستجابة لنقرات الماوس. قد لا تعيدك التطبيقات الطرفية أبدًا إلى موجه الأوامر.
الاستجابة الإنسانية
“قتل” العملية يعني فقط “إجبار العملية على الإنهاء”. قد يكون هذا ضروريًا إذا رفضت العملية الاستجابة.
يوفر Linux أوامر kill و pkill و killall حتى تتمكن من فعل ذلك. يمكن استخدام هذه الأوامر مع أي نوع من العمليات ، الرسومية أو سطر الأوامر ، في المقدمة أو الخلفية.
أمر الموت
لاستخدام القتل ، يجب أن تعرف معرّف العملية (PID) للعملية التي تريد قتلها. يمكن استخدام الأمر ps للعثور على معرف العملية (PID).
لجعل ps يبحث في جميع العمليات ، استخدم الخيار -e (جميع العمليات). من المستحسن لمس الناتج من خلال أقل ، سيكون هناك الكثير منه. اكتب ps ، مسافة ، -e ، مسافة ، | (شرطة) ، ومسافة أخرى ، ثم اكتب أقل. اضغط على Enter لتنفيذ الأمر.
ps -e | أقل
سيعطيك هذا قائمة عمليات مشابهة للصورة أدناه. يمكنك البحث إلى الأمام على أقل باستخدام المفتاح / ويمكنك البحث للخلف باستخدام؟ مفتاح.
للوصول إلى العملية التي تهتم بها ، أرسل إخراج ps إلى grep وحدد الاسم – أو جزء من الاسم – للعملية.
ps -e | أمسك المصراع
بمجرد العثور على PID للعملية التي تريد قتلها ، قم بتمريره إلى أمر kill كمعامل. لإنهاء عملية إيقاف التشغيل التي تم تحديدها بواسطة الأمر السابق ، استخدم هذا الأمر:
قتل 2099
أمر القتل هو قاتل صامت – فهو لا يمنحك أي ملاحظات إذا كان ناجحًا.
الأمر pkill
يسمح لك الأمر pkill بقتل عملية – أو عمليات – بالاسم. لا تحتاج إلى تحديد العملية بواسطة PID. لاستخدام pkill ، يمكنك تحديد مصطلح بحث يستخدمه pkill للتحقق من قائمة العمليات الجارية. تم إنهاء عمليات المطابقة. لذلك تحتاج إلى التأكد من كتابة مصطلح البحث بشكل صحيح.
كشبكة أمان ، يمكنك استخدام الأمر pgrep قبل استخدام الأمر pkill. يقبل الأمر pgrep أيضًا مصطلح بحث. سوف يسرد PID لكل عملية تطابق مصطلح البحث. هذا آمن لأن pgrep لن يصدر إشارة قتل للعمليات ، وإذا كتبت مصطلح البحث الخاطئ فلن تقتل عملية أخرى عن طريق الخطأ. يمكنك التأكد من أنك فكرت في مصطلح البحث بشكل صحيح قبل إرساله إلى pkill. يعالج كل من pkill و pgrep مصطلح البحث بنفس الطريقة. معاملتهم متشابهة لدرجة أنهم يشتركون في نفس جانب الرجل.
لنفترض أن هناك عملية مع “subq” في اسمها. سوف نستخدم ps -u dave | أمر grep للحصول على نظرة خاطفة خلف الستارة. يمكنك أن ترى أن “subq” سوف تتطابق مع هذه العملية وهذه العملية فقط. كان ذلك فقط حتى تتمكن من رؤية الاسم الكامل للعملية.
ps -u ديف | grep subq
لنفترض أن مستخدمنا لم يفعل ؛ كل ما يعرفونه هو أن اسم العملية يحتوي على السلسلة الفرعية “subq”. يستخدمون pgrep للتحقق من وجود تطابق واحد فقط لمصطلح البحث. ثم يستخدمون مصطلح البحث هذا مع pkill.
pgrep subq pkill subq
يمكنك استخدام pkill لقتل عمليات متعددة في وقت واحد. هنا يقوم المستخدم بتشغيل pgrep للتحقق من عدد العمليات التي بدأها Chrome. يستخدمون pkill لقتلهم جميعًا. ثم تحققوا مع pgrep من أنه قد تمت إزالتها جميعًا.
pgrep كروم pkill كروم pgrep كروم
إذا كانت هناك عدة عمليات تعمل بنفس الاسم ، ولكنك لا تريد قتلها جميعًا ، يمكنك استخدام pgrep مع خيار -f (سطر الأوامر) لتحديد أي عملية يتم. مثال بسيط سيكون عمليتي ping. تريد قتل أحدهم دون الآخر. يمكنك استخدام أسطر الأوامر الخاصة بهم للتمييز بينهم. لاحظ استخدام علامات الاقتباس لالتفاف معلمة سطر الأوامر.
pgrep -f “ping 192.168.4.22” pkill -f “ping 192.168.4.22”
قيادة Killall
تحذير: في أنظمة التشغيل Solaris و OpenIndiana ، سيقتل الأمر killall جميع العمليات التي تخصك. إذا كان الجذر أو إذا قمت بإصدار sudo killall ، فستقوم بإعادة تشغيل جهاز الكمبيوتر الخاص بك! أثناء البحث في هذه المقالة ، تم تأكيد هذا السلوك مع أحدث إصدار من OpenIndiana Hipster 2018.10.
يعمل الأمر killall بشكل مشابه لأمر pkill ولكن مع اختلاف معين. بدلاً من تمرير مصطلح البحث إلى الأمر ، يجب عليك إدخال اسم العملية بالضبط.
لا يمكنك تقديم تطابق جزئي لاسم العملية ؛ يجب عليك إدخال اسم العملية بالكامل ، كما هو موضح:
killall shut killall shut
يتيح لك الخيار -y (أصغر من) قتل العمليات التي تم تشغيلها لمدة أقل من فترة محددة. يتم تحديد الفترة بالأرقام متبوعة بإحدى هذه الوحدات:
ث (ثوان) م (دقائق) س (ساعات) د (أيام) ث (أسابيع) M (شهور ، لاحظ حرف “M”) ص (سنوات)
لقتل عملية تسمى ana بدأت للتو وترك جميع مثيلات ana القديمة قيد التشغيل ، يمكنك استخدام المعلمات التالية مع killall ، إذا كنت قد تفاعلت في غضون دقيقتين:
guyall -y 2m ana
يتيح لك الخيار -o (أقدم من) قتل العمليات التي كانت تعمل لفترة أطول من فترة محددة. سيقتل هذا الأمر جميع اتصالات ssh التي كانت تعمل لأكثر من يوم:
killall -o 1d sshd
لا تكن سعيدًا جدًا
تتيح لك هذه الأوامر تحديد العمليات الخاطئة وإنهاؤها بدقة وأمان.
كن دائما على حذر. أولاً ، تأكد من أن العملية التي توشك على قتلها هي التي تريدها حقًا. ثانيًا ، تحقق مرة أخرى – كن حذرًا وتأكد من أن العملية المستهدفة هي العملية التي تريد إنهاءها. استمر في إنهاء العملية عندما تكون راضيًا.