إنهاء عملية في Linux - أوامر ps وkill وkillall. كيفية قتل عملية Linux Centos وإيقاف العملية

06.12.2021

مهما كان الأمر، بعض التطبيقات في لينكسفي بعض الأحيان يتجمدون. وفي الوقت نفسه، هناك حالات لا يستجيب فيها التطبيق على الإطلاق، أو يعمل ببطء شديد بحيث لا يمكن إنهاء عمله بشكل صحيح. للخروج بسرعة من الوضع الناتج، يمكنك "قتل" هذه العملية. للقيام بذلك، استخدم الأوامر قتلو killall. سنكتشف الآن كيفية استخدام هذه الأوامر، والعثور على معرف العملية (PID) للعملية وإرسال إشارة SIGKILL.

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

تحديد معرف العملية (PID) للعملية - الأمر pidof

معرف المنتج- معرف العملية الفريد في النظام لينكس. لإيقاف العملية بشكل صحيح، يجب عليك أولاً تحديد معرف المنتج (PID) الخاص بها. للقيام بذلك، استخدم الأمرين ps و grep. بدوره أمر ملاحظةتم تصميمه لعرض قائمة بالعمليات النشطة في النظام والمعلومات المتعلقة بها. أمر grepيعمل في وقت واحد مع ps (في القناة) وسيبحث في نتائج الأمر ps. يمكنك عرض قائمة بجميع العمليات عن طريق التشغيل سطر الأوامر:

بالطبع، يمكن أيضًا تحديد PID باستخدام قمة. ولكن في معظم الحالات، يكون عدد العمليات كبيرًا جدًا (ويتغير ديناميكيًا في الأعلى)، لذلك ليس من السهل تحديد معرف المنتج (PID) بسرعة وبشكل صحيح. هذا هو بالضبط ما يتم استخدام الأمر grep من أجله. على سبيل المثال، لإنهاء عملية المتصفح جوجل كرومتحتاج إلى تشغيل الأمر التالي:

ملاحظة: الكروم الكروم

$ ملاحظة اكسو | الكروم الكروم
itechf2 20474 2.7 1.5 938416 120136 tty2 Sl+ 11:07 0:00 /opt/google/chrome/chrome

في حالتنا، 20474 هو PID المطلوب. الطريقة الأسهل هي استخدام الأمر com.pidof، يجب عليك تحديد اسم العملية. على سبيل المثال:

$بيدوفكروم
20728 20706 20668 20647 20586 20574 20553 20508 20474

إنهاء عملية في نظام التشغيل Linux - أوامر القتل والقتل جميعها

إنهاء عملية في نظام التشغيل لينكس، معرفة PID الخاص به، يمكنك استخدام الأمر قتل. الأمر يستحق المعرفة والفهم: تم تصميم أمر القتل لإرسال إشارة إلى العملية. افتراضيًا، إذا لم نحدد الإشارة التي سيتم إرسالها، فسيتم إرسال إشارة SIGTERM (من انتهاء الكلمة). يخبر SIGTERM العملية بالإنهاء. كل إشارة لها رقمها الخاص. SIGTERM مرقم 15. يمكن الحصول على قائمة بجميع الإشارات (وأرقامها) التي يمكن لأمر الإيقاف إرسالها عن طريق تشغيل اقتل -ل . لإرسال إشارة SIGKILL (مرقمة 9) لمعالجة 2811، قم بتشغيل سطر الأوامر:

في الوقت نفسه، قد لا توقف إشارة SIGTERM العملية (على سبيل المثال، عند اعتراض الإشارة أو حظرها)، ولكن SIGKILL تقتل العملية دائمًا، حيث لا يمكن اعتراضها أو تجاهلها.

أمر Killallفي Linux تم تصميمه "لقتل" جميع العمليات التي تحمل الاسم نفسه. يعد هذا مناسبًا لأننا لا نحتاج إلى معرفة معرف العملية (PID) للعملية. على سبيل المثال، نريد إغلاق جميع العمليات المسماة chrome. تشغيل في المحطة:

يرسل أمر killall، مثل kill، إشارة SIGTERM افتراضيًا. لإرسال إشارة أخرى تحتاج إلى استخدام الخيار . على سبيل المثال:

المهام والعمليات

أي شيء يتم تنفيذه في برنامج لينكسمُسَمًّى عملية. يتميز Linux كنظام متعدد المهام بحقيقة أنه يمكن تنفيذ العديد من العمليات التي تخص مستخدمًا واحدًا أو أكثر في وقت واحد. يمكنك عرض قائمة بالعمليات الجارية حاليًا باستخدام الأمر ملاحظة، على سبيل المثال، على النحو التالي:

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

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

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

في معظم الحالات، سيقوم المستخدمون بتشغيل مهمة واحدة فقط - وسيكون هذا هو الأمر الأخير الذي أدخلوه في غلاف الأوامر. ومع ذلك، فإن العديد من الأصداف (بما في ذلك bash وtcsh) لها وظائف إدارة الوظائف(التحكم في الوظيفة)، مما يسمح لك بتشغيل عدة أوامر في نفس الوقت أو المهام(الوظائف) والتبديل بينهما حسب الحاجة.

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

وضع المقدمة والخلفية

يمكن أن تكون المهام إما المقدمة(المقدمة)، أو خلفية(خلفية). يمكن أن تكون هناك مهمة واحدة فقط في المقدمة في أي وقت محدد. المهمة الأمامية هي المهمة التي تتفاعل معها؛ يتلقى الإدخال من لوحة المفاتيح ويرسل الإخراج إلى الشاشة (ما لم تقم بالطبع بإعادة توجيه الإدخال أو الإخراج إلى مكان آخر). وفي المقابل، لا تتلقى المهام الخلفية مدخلات طرفية؛ عادةً، لا تتطلب مثل هذه الوظائف تفاعل المستخدم.

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

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

فور استقبال الإشارة مهما كانت العملية في ذلك الوقت. إشارتان - رقم 9 (قتل ) و 19 (قف ) و 19 ( ) - تتم معالجتها دائمًا بواسطة النظام. أولهم ضروري لقتل العملية بالتأكيد (ومن هنا الاسم). إشارة يعلق العملية: في هذه الحالة، لا تتم إزالة العملية من جدول العمليات، ولكن لا يتم تنفيذها حتى تتلقى الإشارة 18 (تابع ) و 19 () - وبعد ذلك سوف يستمر في العمل. في غلاف أوامر Linux، يتم الإشارة يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -كنترول .

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

(س) لا يجوز إيقاف العملية على الفور. ويتم ذلك حتى يتمكن البرنامج من تدمير آثار عمله قبل اكتماله. ومن الناحية العملية، لا يمكن مقاطعة بعض البرامج بهذه الطريقة على الإطلاق.

النقل إلى الخلفية وتدمير الوظائف لنبدأ معمثال بسيط

. دعونا نلقي نظرة على الأمر نعم، والذي قد يبدو للوهلة الأولى عديم الفائدة. يرسل هذا الأمر دفقًا لا نهاية له من السلاسل التي تتكون من الحرف y إلى الإخراج القياسي. دعونا نرى كيف يعمل هذا الأمر:

/home/larry# Yes y y y y y يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -(المقاطعة) تموت عملية العمل. عادةً ما تتم مقاطعة الوظائف من خلال تسلسل الهروبسيستمر تسلسل هذه الخطوط إلى أجل غير مسمى. يمكنك تدمير هذه العملية عن طريق إرسال إشارة المقاطعة إليها، أي عن طريق الضغط

. دعونا نفعل الأشياء بشكل مختلف الآن. لمنع عرض هذا التسلسل اللامتناهي على الشاشة، سنعيد توجيه الإخراج القياسي للأمر Yes إلى /dev/null . كما تعلم، يعمل الجهاز /dev/null بمثابة "الثقب الأسود": يتم فقدان جميع البيانات المرسلة إلى هذا الجهاز. باستخدام هذا الجهاز، من السهل جدًا التخلص من الكثير من المخرجات من بعض البرامج.

الآن لا يتم عرض أي شيء على الشاشة. ومع ذلك، لم يتم إرجاع موجه Shell أيضًا. وذلك لأن الأمر Yes لا يزال قيد التشغيل ويرسل رسائله المكونة من الأحرف y إلى /dev/null .

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

وستعمل هناك دون التواصل معك.

إحدى الطرق لوضع عملية في الخلفية هي إلحاق & بنهاية الأمر. مثال:

/home/larry# Yes > /dev/null & + 164 /home/larry# الرسالة هيرقم الوظيفة

(رقم الوظيفة) للعملية نعم. تقوم قذيفة الأوامر بتعيين رقم مهمة لكل مهمة تقوم بتشغيلها. نظرًا لأن نعم هي الوظيفة الوحيدة القابلة للتنفيذ، فقد تم تخصيص الرقم 1 لها. الرقم 164 هو رقم التعريف المرتبط بهذه العملية (PID)، ويتم إعطاء هذا الرقم أيضًا للعملية بواسطة النظام. وكما سنرى لاحقًا، يمكن الوصول إلى العملية عن طريق تحديد هذين الرقمين.إذن لدينا الآن عملية نعم تعمل في الخلفية، وترسل بشكل مستمر دفقًا من y إلى الجهاز /dev/null. من أجل معرفة حالة هذه العملية، تحتاج إلى تنفيذ الأمر

وظائف

، وهو أمر داخلي في Shell. ملاحظة/home/larry# jobs + تشغيل نعم>/dev/null & /home/larry#

ونحن نرى أن هذا البرنامج يعمل حقا. لمعرفة حالة المهمة، يمكنك أيضًا استخدام الأمر ، كما هو موضح أعلاه.من أجل إرسال إشارة إلى العملية (في أغلب الأحيان تكون هناك حاجة قتليقاطع رقم الإشارة 15 (وظيفة وظيفية) يتم استخدام الأداة المساعدة . يتم إعطاء هذا الأمر إما رقم المهمة أو معرف المنتج (PID) كوسيطة. المعلمة الاختيارية هي رقم الإشارة التي يجب إرسالها إلى العملية. بشكل افتراضي يتم إرسال الإشارة. في الحالة المذكورة أعلاه، كان رقم الوظيفة 1، لذلك الأمر

قتل %1 نظرًا لأن نعم هي الوظيفة الوحيدة القابلة للتنفيذ، فقد تم تخصيص الرقم 1 لها. الرقم 164 هو رقم التعريف المرتبط بهذه العملية (PID)، ويتم إعطاء هذا الرقم أيضًا للعملية بواسطة النظام. وكما سنرى لاحقًا، يمكن الوصول إلى العملية عن طريق تحديد هذين الرقمين.سوف يقاطع المهمة عندما يتم الوصول إلى مهمة من خلال رقمها (بدلاً من معرف المنتج الشخصي الخاص بها)، فيجب أن يسبق هذا الرقم رمز النسبة المئوية ("%") في سطر الأوامر.

الآن دعنا ندخل الأمر

مرة أخرى للتحقق من نتيجة الإجراء السابق:

يمكنك أيضًا إنهاء مهمة باستخدام رقم تعريف العملية (PID). تتم الإشارة إلى هذا الرقم، بالإضافة إلى رقم تعريف الوظيفة، عند بدء المهمة. في مثالنا، كانت قيمة PID هي 164، لذلك كان الأمر قتل 164سيكون معادلاً للأمر . يتم إعطاء هذا الأمر إما رقم المهمة أو معرف المنتج (PID) كوسيطة. المعلمة الاختيارية هي رقم الإشارة التي يجب إرسالها إلى العملية. بشكل افتراضي يتم إرسال الإشارة. عند استخدام PID كوسيطة لأمر الإيقاف، لا تحتاج إلى إدخال الحرف "%".

توقف واستئناف الوظائف

لنبدأ أولاً العملية باستخدام الأمر Yes في المقدمة، كما حدث من قبل:

. دعونا نفعل الأشياء بشكل مختلف الآن. لمنع عرض هذا التسلسل اللامتناهي على الشاشة، سنعيد توجيه الإخراج القياسي للأمر Yes إلى /dev/null . كما تعلم، يعمل الجهاز /dev/null بمثابة "الثقب الأسود": يتم فقدان جميع البيانات المرسلة إلى هذا الجهاز. باستخدام هذا الجهاز، من السهل جدًا التخلص من الكثير من المخرجات من بعض البرامج.

كما كان من قبل، نظرًا لأن العملية قيد التشغيل في المقدمة، فلن يعود موجه الصدفة إلى الشاشة.

الآن، بدلاً من مقاطعة المهمة بمجموعة مفاتيح يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -(المقاطعة) تموت عملية العمل. عادةً ما تتم مقاطعة الوظائف من خلال تسلسل الهروب، المهمة ممكنة تعليق(تعليق، حرفيًا - تعليق)، وإرسال إشارة له ) و 19 (. لإيقاف مهمة مؤقتًا، تحتاج إلى الضغط على مجموعة المفاتيح المناسبة، عادةً ما تكون هذه يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -كنترول .

/home/larry# Yes > /dev/null يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -كنترول+ توقف نعم >/dev/null /home/larry#

العملية المعلقة ببساطة لا يتم تنفيذها. لا يستهلك موارد المعالج. يمكن بدء تشغيل المهمة المعلقة من نفس النقطة كما لو لم يتم تعليقها.

لاستئناف المهمة قيد التشغيل في المقدمة، يمكنك استخدام الأمر fg(من كلمة المقدمة - المقدمة).

/home/larry# fg Yes >/dev/null

ستعرض واجهة الأمر مرة أخرى اسم الأمر حتى يعرف المستخدم المهمة التي يقوم بتشغيلها حاليًا في المقدمة. لنوقف هذه المهمة مؤقتًا مرة أخرى بالضغط على المفاتيح يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -كنترول، ولكن هذه المرة لنبدأ تشغيله في الخلفية باستخدام الأمر بغ(من كلمة الخلفية - الخلفية). سيؤدي هذا إلى تشغيل العملية كما لو تم تشغيلها باستخدام أمر يحتوي على & في النهاية (كما حدث في القسم السابق):

/home/larry# bg + Yes $>$/dev/null & /home/larry#

تم إرجاع موجه الصدفة. الآن الفريق نظرًا لأن نعم هي الوظيفة الوحيدة القابلة للتنفيذ، فقد تم تخصيص الرقم 1 لها. الرقم 164 هو رقم التعريف المرتبط بهذه العملية (PID)، ويتم إعطاء هذا الرقم أيضًا للعملية بواسطة النظام. وكما سنرى لاحقًا، يمكن الوصول إلى العملية عن طريق تحديد هذين الرقمين.يجب أن تظهر أن هذه العملية نعميعمل فعلا في الوقت الراهن؛ قتليمكن قتل هذه العملية بالأمر

، كما تم من قبل. يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -كنتروللا يمكنك استخدام اختصار لوحة المفاتيح لإيقاف مهمة تعمل في الخلفية مؤقتًا fg. قبل إيقاف المهمة مؤقتًا، يجب أن يتم وضعها في المقدمة مع الأمر fgوعندها فقط توقف. وهكذا الأمر

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

"

في المقابل، يتم تشغيل مهمة في الخلفية، واستخدام الذاكرة، والقيام ببعض الأشياء التي قد ترغب في القيام بها، ولكنك قد تعمل على برامج أخرى في نفس الوقت.

قد تحاول المهام التي تعمل في الخلفية عرض بعض النصوص على الشاشة. وهذا سوف يتعارض مع العمل في مهام أخرى. يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -(المقاطعة) تموت عملية العمل. عادةً ما تتم مقاطعة الوظائف من خلال تسلسل الهروب/الصفحة الرئيسية/لاري# نعم & fgهنا لم تتم إعادة توجيه الإخراج القياسي إلى الجهاز /dev/null، لذلك ستتم طباعة دفق لا نهاية له من أحرف y على الشاشة. لا يمكن إيقاف هذا الموضوع بسبب مجموعة المفاتيح يمكن تمريرها إلى العملية النشطة باستخدام تسلسل الهروب -(المقاطعة) تموت عملية العمل. عادةً ما تتم مقاطعة الوظائف من خلال تسلسل الهروب .

لا يؤثر على الوظائف في الخلفية. من أجل إيقاف هذا الإخراج، تحتاج إلى استخدام الأمر fg، والذي سيجلب المهمة إلى المقدمة، ثم يدمر المهمة باستخدام مجموعة مفاتيح بغدعونا نبدي ملاحظة أخرى. عادة من قبل الفريق نظرًا لأن نعم هي الوظيفة الوحيدة القابلة للتنفيذ، فقد تم تخصيص الرقم 1 لها. الرقم 164 هو رقم التعريف المرتبط بهذه العملية (PID)، ويتم إعطاء هذا الرقم أيضًا للعملية بواسطة النظام. وكما سنرى لاحقًا، يمكن الوصول إلى العملية عن طريق تحديد هذين الرقمين.والفريق fgتؤثر على تلك الوظائف التي تم تعليقها مؤخرًا (سيتم وضع علامة على هذه الوظائف بالرمز + بجوار رقم الوظيفة إذا قمت بإدخال الأمر بغ). إذا تم تشغيل مهمة واحدة أو أكثر في نفس الوقت، فيمكن وضع المهام في المقدمة أو الخلفية عن طريق تحديد الأوامر كوسائط أو الأوامررقم هويتهم (معرف الوظيفة). على سبيل المثال، الأمر ز %2يضع المهمة رقم 2 في المقدمة والأمر fgبى جى %3 بغيضع المهمة رقم 3 في الخلفية. استخدم معرفات PID كوسائط أوامر

و %2 إنه ممنوع. أو الأوامر .

علاوة على ذلك، لإحضار الوظيفة إلى المقدمة، يمكنك ببساطة تحديد رقمها. نعم الفريق fg , بغسيكون معادلاً للأمر نظرًا لأن نعم هي الوظيفة الوحيدة القابلة للتنفيذ، فقد تم تخصيص الرقم 1 لها. الرقم 164 هو رقم التعريف المرتبط بهذه العملية (PID)، ويتم إعطاء هذا الرقم أيضًا للعملية بواسطة النظام. وكما سنرى لاحقًا، يمكن الوصول إلى العملية عن طريق تحديد هذين الرقمين.من المهم أن تتذكر أن وظيفة التحكم في الوظيفة تنتمي إلى الصدفة. فرق

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

أبسط و طريقة عالميةقتل عملية في Linux يستخدم الأوامر الطرفية. سيعمل هذا الخيار على أي توزيعة لينكس.

العمليات في لينكس

في غرفة العمليات نظام لينكسعادة ما تسمى العملية برنامج التشغيلأو التطبيق. يمكن أيضًا تسمية العملية بأية مهمة قيد التشغيل حاليًا السيطرة على لينكس. يمكن لأي عملية قيد التشغيل إطلاق عملية فرعية.

تتمتع جميع العمليات التي تعمل على Linux بالسمات التالية:

  1. PID هو معرف فريد لكل عملية.
  2. PPID - معرف العملية الأصلية.
  3. معرف المستخدم الذي بدأ العملية.
  4. أولوية.
  5. حالة العملية.

كل عملية قيد التشغيل تكون في إحدى الحالات:

  • "في تَقَدم." يتم استخدام الحرف R لتمثيل هذه الحالة.
  • تسمى العملية التي بدأت تشغيل النظام، مثل الإدخال أو الإخراج، وتنتظر اكتمالها، "الانتظار". يُشار إليه بالحرف S.
  • العملية التي أوقفها المستخدم أو نظام التشغيل Linux تكون في حالة التوقف. يشار إلى هذه الحالة بالرمز T.
  • "الزومبي" هي العمليات التي لم تعد قيد التشغيل ولكنها تستهلك الموارد. نظام التشغيل. تم تحديدهم بالحرف Z.
  • لا يمكن إنهاء العملية المستمرة حتى تكتمل عملية DMA. يتم الإشارة إلى العملية بالرمز D.

عملية البحث

قبل قتل عملية ما في Linux، يجب عليك أولاً العثور عليها. الأمران الأكثر استخدامًا لهذا الغرض في Linux هما top وps.

يعرض الأمر العلوي قائمة كاملة بالعمليات الحالية. بالإضافة إلى ذلك، تحتوي القائمة على الكثير من المعلومات المفيدة حول كل منها عملية التشغيل، على سبيل المثال:

  • PID - رقم العملية الفريد؛
  • المستخدم - تسجيل دخول المستخدم الذي أطلق هذه العملية؛
  • العلاقات العامة - أولوية العملية في وقت معين؛
  • NI - الأولوية المعينة للعملية بواسطة أمر NICE؛
  • S هي حالة هذه العملية؛
  • %CPU - مقدار الوقت الذي تستغرقه وحدة المعالجة المركزية (CPU) في هذه العملية (بالنسبة المئوية)؛
  • %MEM-الحجم كبشوالتي تستغرقها هذه العملية (بالنسبة المئوية)؛
  • TIME+ - مقدار الوقت الذي انقضى منذ بدء العملية؛
  • COMMAND هو البرنامج الذي بدأ العملية.

يتم عرض المعلومات المقدمة بواسطة الأمر العلوي مرتبة حسب مستوى وقت وحدة المعالجة المركزية المستخدمة (عمود %CPU). يمكن للمستخدم تغيير ترتيب الفرز:

  • لفرز العمليات حسب مقدار ذاكرة الوصول العشوائي المشغولة (عمود %MEM)، تحتاج إلى الضغط على مجموعة المفاتيح Shift+M؛
  • يمكنك الفرز حسب رقم العملية (عمود PID) باستخدام تركيبة Shift+N؛
  • فرز حسب وقت التشغيل (عمود TIME+) - Shift+T.
  • العودة إلى الفرز الأصلي حسب مستوى تحميل وحدة المعالجة المركزية - اضغط على Shift + P.

باستخدام الأمر ps

يمكن أن يوفر الأمر العلوي الكثير من المعلومات المفيدة، لكنه ليس الأكثر طريقة مريحةالحصول على المعلومات اللازمة حول العملية التي تحتاجها. لتجنب البحث عن العملية التي تحتاجها، يمكنك استخدام الأمر ps وتصفية القائمة باستخدام الأمر grep. على سبيل المثال، إذا كنت تريد العثور على جميع العمليات المرتبطة بالتشغيل متصفح اوبرايمكنك إدخال الأمر ps axu | grep موزيلا.

يحتوي الأمر ps على الخيارات التالية:

  • أ - إظهار العمليات لجميع المستخدمين؛
  • u - عرض المستخدم صاحب العملية؛
  • x - إظهار العمليات غير المرتبطة بالمحطة. هذا الخيارمهم عند البحث عن معلومات حول تطبيق الرسومات.

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

طرق أخرى للعثور على عملية

للعثور على معرف عملية ما باسمها، يوجد الأمر pidof. تنسيق استخدامه كما يلي: pidof+اسم البرنامج. على سبيل المثال، للعثور على جميع معرفات PID المتعلقة ببرنامج Opera، يمكنك إدخال: pidof Opera.

في بعض الحالات، يحدث أن البرنامج قد أكمل تنفيذه، ولكن لم يتم إصداره منفذ الشبكة. للحصول على معلومات، في هذه الحالة تحتاج إلى إدخال أمر المصهر: fuser -vn tcp 80. حيث 80 هو رقم المنفذ العالق. بعد ذلك يمكنك القتل عملية لينكسعن طريق الميناء.

بمجرد اكتشاف معرف العملية (PID) للعملية واسمها، يمكنك متابعة عملية الإنهاء تطبيق غير ضروري. للقيام بذلك، يتم استخدام أمرين: kill - kill a Operation by id في Linux وkillall - إنهاء تنفيذ البرنامج بالاسم.

هيكل أمر القتل: اقتل SIGNAL PID. حيث SIGNAL هي الإشارة التي سيتم إرسالها وPID هو معرف العملية.

معلمة SIGNAL لإنهاء العملية هي 9 (SIGKILL). وبالتالي، من أجل إنهاء عملية بواسطة pid في Linux، تحتاج إلى إدخال الأمر في وحدة التحكم: kill -9 9578. حيث 9578 هو رقم العملية الفريد.

أمر إنهاء العملية ليس هو الأمر الوحيد الذي يمكن إرساله باستخدامه تطبيق النظامقتل. يمكنك الحصول على قائمة بجميع الأوامر التي يمكن إرسالها إلى أمر باستخدام kill عن طريق كتابة kill -l.

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

كيفية قتل عملية بالاسم في لينكس

إذا كنت تعرف اسم البرنامج الذي تريد إيقافه، فيمكنك استخدام أمر killall. على سبيل المثال، لقتل جميع العمليات المتعلقة بتطبيق Opera، تحتاج إلى إدخال الأمر: killall -9 Opera.

ومع ذلك، لا يؤدي هذا الأمر دائمًا إلى إنهاء العمليات المتعلقة بالبرنامج الذي يتم تدميره. إذا قمت بإدخال ps aux | بعد تشغيل الأمر أعلاه grep Opera وسترى أن بعض العمليات لا تزال قيد التشغيل، فمن الأفضل إيقافها باستخدام تطبيق قتل النظام.

في بعض الحالات، من أجل إيقاف عملية يجريها مستخدم آخر على نظام التشغيل Linux، قد تحتاج إلى القيام بذلك حقوق الجذر. ثم قبل الأمر بإنهاء العملية، تحتاج إلى إدخال أمر Sudo.

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

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

في بعض الأحيان تكون هناك حاجة لقتل عملية في Ubuntu Linux، وكيفية القيام بذلك بشكل صحيح وعدم التسبب في ضرر، سنناقش كلاً من حلول وحدة التحكم ومن خلال الواجهة الرسومية.

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

عند العمل مع Ubuntu Linux، ربما تكون لديك أسئلة بالفعل:

كيفية تحديد PID من أجل إنهاء العملية/التطبيق لاحقًا

إذا كنت لا ترغب في تشغيل الأمر قمةأو نظير آخر أكثر قوة com.htop، ثم أزعج نفسك بالبحث عن معرف معرف العملية أو ذاك، فهناك طريقة أسهل للخروج/الحل للعثور عليه معرف المنتجالعملية، يمكنك استخدام الأمر " com.pidof" أو " ملاحظة:".

لنفترض أننا بحاجة إلى معرفة معرف العملية تطبيقات جوجل Chrome، ما نفعله في هذه الحالة هو فتح الجهاز Ctrl + Alt + T وتنفيذ الأمر في الجهاز:

بيدوف كروم

نحصل على الإخراج:

9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

جاهز تقريبًا، لقد حددنا PID، اقرأ أدناه حول كيفية إيقاف العملية.

كيفية قتل عملية في Linux بواسطة PID

لقد حددنا PID الموجود في التطبيق الذي نريد إيقافه، من الموضح أعلاه، ترى أن لدي الآن العديد من علامات التبويب قيد التشغيل في متصفحي، بالإضافة إلى عمليات المتصفح الفردية، في المجموع هناك 16 معرفًا، لقتلهم جميعًا ، نقوم بتشغيل الأمر:

سودو قتل 9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

يمكنك أيضًا عرض جميع العمليات النشطة في النظام عن طريق تشغيل الأمر:

سودو ملاحظة اكسو

نعم، الأمر بهذه البساطة. بدلاً من Chrome، يمكن أن يكون هناك أي تطبيق آخر، Skype أو أي تطبيق آخر.

يمكنك أيضًا استخدام أمر إضافي لاكتشاف معرف العملية الخاص بالتطبيق الذي تريد إيقافه:

ملاحظة-أ | grep -i اسم التطبيق

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

ملاحظة-أ | grep -i سكايب

نحصل على النتيجة التالية:

9257؟ 00:00:57 سكايب

كل ما نحتاجه موجود في راحة أيدينا، وهناك معرف ويمكننا أيضًا معرفة المدة التي استغرقتها هذه العملية.

كيفية استخدام أمر القتل في نظام التشغيل Linux

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

لقد تلقينا المعرف ويمكننا الآن إنهاء التطبيق:

سودو قتل 9257

هذا كل شيء، قتل التطبيق.

كيفية قتل عملية في لينكس بالاسم

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

سودو Killall سكايب

خيار أيضًا:

سودو Killall -S 9 سكايب

في نفس اللحظة التي يتوقف فيها التطبيق عن العمل، بهذه الطريقة يمكنك بسهولة إيقاف العمليات التي لا تعجبك.

أمر الموت، ما لا يجب عليك فعله في المحطة

لقد كتبت سابقًا مادة عن النصائح السيئة، والتي لا ينبغي تنفيذ الأوامر في الجهاز حتى لا تقتل النظام، لكن القائمة ليست مثالية ويمكن استكمالها بالعديد من الأوامر، ستجد أحدها أدناه.

فيما يلي مثال لأمر الموت:

سودو اقتل -9 -1

سيقتل هذا الأمر جميع العمليات الجارية حاليًا. لا أوصي بالقيام بذلك لأن العواقب قد تكون غير متوقعة وسيتعين عليك على الأرجح إعادة تشغيل النظام بدون واجهة رسومية. في حالة فشل الواجهة الرسومية فجأة، قم بفتح الجهاز باستخدام الأوامر CTRL+ALT+F1، يتم فتح كل نافذة جديدة بنفس القياس، ببساطة تغيير F1 إلى F2 وهكذا.

يمكنك أيضًا الحصول على مساعدة بشأن الأوامر المستخدمة أعلاه من خلال الجهاز عن طريق تشغيل الأوامر:

رجل ملاحظة رجل grep رجل pidof رجل يقتل رجل Killall

وبهذا نختتم مادتنا القصيرة، إذا لم تفهم شيئًا ما، فاسأل في التعليقات على المادة أدناه.

يجب استخدام الوسيطة -9 (أو KILL) لأمر القتل فقط على الأنظمة المتوافقة مع POSIX عند الضرورة القصوى. لماذا؟ لا يمكن معالجة إشارة KILL من خلال العملية. وهذا يعني أنه بعد قتل العملية باستخدام kill -9، ستبقى العمليات الفرعية في الذاكرة وتصبح "يتيمة" نظام الملفاتسيتم انسدادها بالملفات المؤقتة، وستكون شرائح الذاكرة المشتركة نشطة، وسيتم تعليق المقابس، ولن يتم تنفيذ وظيفة atexit(3) على الإطلاق. ونتيجة لذلك، هناك خطر مواجهة مشاكل غير متوقعة ويصعب تصحيحها.

بدلاً من ذلك، استخدم إشارة TERM الافتراضية، واقتل فقط إذا ثبت أن الإشارات الأقل إشكالية غير فعالة:

$قتل 6738
قتل $ -INT 6738
$ اقتل -HUP 6738
$ اقتل - اقتل 6738

إذا فشلت حتى إشارة KILL في إنهاء العملية، فمن المحتمل أن تكون العملية عالقة في الإدخال/الإخراج أو في حالة أخرى لا يمكن قتلها. قد تحتاج إلى إعادة التشغيل أو إلغاء تحميل محرك أقراص الشبكة المعطل بالقوة.

يعد استخدام القتل الافتراضي -KILL أمرًا مقبولًا عند التعامل مع تطبيق به مشكلات، على سبيل المثال، غالبًا ما يتم إنهاء الإصدارات الأقدم من Netscape فقط بإشارة KILL. ومع ذلك، يعد هذا استثناءً نادرًا للقاعدة: استخدم KILL لهذه التطبيقات المعروفة ولهم فقط.

المشاكل التي تمت مواجهتها عند إنهاء العمليات

يمكن أن يؤدي إرسال إشارات مختلفة بشكل تسلسلي إلى حدوث المشكلات التالية: أولاً، قد تستغرق العملية ثوانٍ، أو حتى عشرات الثواني، لتنتهي بشكل آمن. استغرق أحد المنتجات التي استخدمتها أكثر من 30 ثانية لينتهي بشكل صحيح بعد تلقي إشارة TERM. ولحسن الحظ، تم اكتشاف هذه الميزة أثناء الاختبار، لذلك تم كتابة سكريبت مناسب لهذه الحالة. ثانيًا، توجد أحيانًا مواقف تنتهي فيها عملية قديمة بينما تستحوذ عملية جديدة على معرفها في الفاصل الزمني بين إشارات TERM وKILL. الأنظمة ذات معدل دوران العمليات العالي والأنظمة التي تقوم فيها النواة بتعيين معرفات PID بشكل عشوائي، مثل OpenBSD، معرضة بشكل خاص لخطر ذلك. التحقق من اسم العملية أو معرف PPID الخاص بها لا يساعد دائمًا، نظرًا لأن العملية الجديدة يمكن أن تكون شوكة من نفس الأصل ولها نفس الاسم، لذلك قد تتحقق البرامج النصية المصابة بجنون العظمة أيضًا من وقت إنشاء العملية أو البيانات الوصفية الأخرى قبل إرسال الإشارة. قد تحدث هذه المواقف نادرًا، لكنها تستحق أخذها في الاعتبار إذا كان عليك التعامل مع عملية حرجة.

إشارات إنهاء العملية

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

تقوم إشارة HUP بتجميد القشرة، لذلك طريقة جيدةامسح الصدفة المعلقة في انتظار الإدخال، أو أغلق جلسة SSH.

أكثر معلومات مفصلةتمت الإشارة إلى إشارات إنهاء العملية في