كيف تقتل العمليات من Linux Terminal

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