أحيانًا يكون قتل عملية ما هو الطريقة الوحيدة للتخلص منها. على الرغم من الاسم القاسي ، فإن “قتل” العملية يعني فقط “إجبارها على الإقلاع”. إليك كيفية القيام بذلك من سطر أوامر Linux أو macOS.
ما هي العملية؟
يعد تشغيل البرامج مثل متصفح الويب والعمليات الخلفية المرتبطة ببيئة سطح المكتب وخدمات نظام Linux كلها عمليات.
يمكنك تجميع العمليات في مجموعتين:
- عمليات المقدمة هي العمليات التي بدأها المستخدم أو أطلقها. قد تكون في نافذة طرفية ، أو قد تكون تطبيقًا رسوميًا.
- عمليات الخلفية هي جميع العمليات التي تبدأ تلقائيًا وليس لها أي تفاعل مع المستخدمين. لا يتوقعون مدخلات من المستخدمين ولا يقدمون النتائج أو المخرجات لهم. عمليات الخلفية هي أشياء مثل الخدمات والشياطين.
إذا كانت عمليات المقدمة هي واجهة طاقم المسرح والممثلين ، فإن عمليات الخلفية هي وراء الكواليس فريق “خلف الكواليس”.
عندما تتصرف العمليات بشكل سيء أو تتعطل ، فإنها يمكن أن تستهلك الكثير من وقت وحدة المعالجة المركزية ، أو تستهلك ذاكرة الوصول العشوائي الخاصة بك ، أو تدخل حلقة حسابية ضيقة وتصبح غير مستجيبة. يمكن أن ترفض التطبيقات الرسومية الاستجابة لنقرات الماوس. قد لا تعيدك التطبيقات الطرفية أبدًا إلى موجه الأوامر.
الجواب الإنساني
“قتل” العملية يعني فقط “إجبار العملية على الانسحاب”. قد يكون هذا ضروريًا إذا كانت العملية ترفض الاستجابة.
تقدم لينكس kill
، pkill
و killall
الأوامر للسماح لك أن تفعل ذلك تماما. يمكن استخدام هذه الأوامر مع أي نوع من العمليات ، الرسومية أو سطر الأوامر ، المقدمة أو الخلفية.
أمر القتل
لاستخدام kill
، يجب أن تعرف معرّف العملية (PID) للعملية التي ترغب في إنهاؤها. و ps
يمكن استخدام الأمر لتجد PID عملية.
أن يكون ps
البحث من خلال جميع العمليات استخدام -e
الخيار (جميع العمليات). less
يُنصح بتمرير الإخراج عبر الأنابيب ، وسيكون هناك قدر كبير منه. اكتب ps
، مسافة ، -e
مسافة ، |
(حرف أنبوب) ، مسافة أخرى ثم اكتب less
. اضغط على Enter لتنفيذ الأمر.
ps -e | less
سيعطيك هذا قائمة عملية تشبه لقطة الشاشة أدناه. يمكنك البحث للأمام less
باستخدام /
المفتاح ويمكنك البحث للخلف باستخدام ?
المفتاح.
لبدء العملية التي تهتم بها ، قم بتمرير الإخراج من ps
خلالها grep
وحدد الاسم – أو جزء من الاسم – للعملية.
ps -e | grep shutter
بمجرد تحديد PID للعملية التي ترغب في إنهاؤها ، قم بتمريره إلى kill
الأمر كمعامل. لإنهاء shutter
العملية المحددة بواسطة الأمر السابق ، استخدم هذا الأمر:
kill 2099
و kill
الأمر قاتل، انها صامتة لا يعطيك أي ردود فعل إذا كان ناجحا.
أمر 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
لا تكن سعيدًا جدًا
ستسمح لك هذه الأوامر بتحديد وإنهاء العمليات الخاطئة بدقة وأمان بشكل صحيح.
كن حذرا دائما. أولاً ، تأكد من أن العملية التي توشك على قتلها هي التي تريدها حقًا. ثانيًا ، تحقق مرة أخرى – كن حذرًا وتأكد من أن العملية المستهدفة هي العملية التي تريد إنهاؤها. تابع إنهاء العملية بمجرد أن تشعر بالرضا.