لينكس:قتل مهمة الخلفية
-
06-07-2019 - |
سؤال
كيف يمكنني إنهاء آخر مهمة خلفية تم إنشاؤها في نظام التشغيل Linux؟
مثال:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
المحلول
وهناك متغير خاص لهذا في باش:
kill $!
و$! توسع إلى PID من عملية مشاركة المنفذة في الخلفية.
نصائح أخرى
وأنت يمكن أن تقتل من قبل عدد الوظائف. عندما كنت وضعت مهمة في الخلفية سترى شيئا مثل:
$ ./script &
[1] 35341
وهذا [1]
هو عدد المهمة، ويمكن الرجوع إليها مثل:
$ kill %1
$ kill %% # Most recent background job
لترى قائمة من الأرقام المهمة استخدم الأمر jobs
. أكثر من man bash
:
وهناك عدد من الطرق للإشارة إلى وظيفة في وعاء. و%
الطابع يدخل اسم مهمة. قد يكون عدد الوظائف n
يشار إلى %n
. ألف وظيفة قد يتم الإشارة إلى استخدام بادئة من الاسم الذي يستخدم لبدء تشغيله، أو باستخدام فرعية أيضا أن
يظهر في سطر الأوامر الخاصة به. على سبيل المثال، يشير %ce
إلى وظيفة ce
توقف. إذا بادئة مباريات أكثر من وظيفة، باش
تقارير خطأ. باستخدام %?ce
، من ناحية أخرى، يشير إلى أي وظيفة التي تحتوي على ce
سلسلة في سطر الأوامر الخاصة به. إذا كان
مباريات فرعية أكثر من وظيفة، باش تقارير خطأ. و%%
الرموز و%+
الرجوع إلى فكرة قذيفة من المهمة الحالية، وهو توقف العمل الماضية بينما كان في المقدمة أو التي في الخلفية. الوظيفة السابقة قد
يتم الرجوع إليها باستخدام %-
. في الناتج تتعلق وظيفة (على سبيل المثال، وإخراج الأمر وظائف)، المهمة الحالية هي دائما
ترفع علم مع +
، وظيفته السابقة مع -
. يشير %
احد (مع عدم وجود مواصفات الوظيفة المرفقة) أيضا
وظيفتك الحالية.
والأمر التالي يوفر لك قائمة بجميع العمليات الخلفية في جلسة العمل الخاصة بك، جنبا إلى جنب مع معرف المنتج. ثم يمكنك استخدامه لقتل هذه العملية.
jobs -l
والاستخدام مثال:
$ sleep 300 &
$ jobs -l
[1]+ 31139 Running sleep 300 &
$ kill 31139
وهذا يجب قتل جميع العمليات الخلفية:
jobs -p | xargs kill -9
skill doB
وskill
هو نسخة من الأمر قتل التي تمكنك من اختيار واحد أو عدة عمليات على أساس معايير معينة.
وتحتاج إلى معرف المنتج لها ... استخدام "-A ملاحظة" للعثور عليه.
هذه إجابة خارج الموضوع، ولكن بالنسبة لأولئك المهتمين، ربما تكون ذات قيمة.
كما في إجابة @John Kugelman، فإن % يرتبط بمواصفات الوظيفة.كيفية العثور على ذلك بكفاءة؟استخدم أمر &pattern أقل, ، يبدو أن الرجل يستخدم عددًا أقل من أجهزة النداء (ليس متأكدًا)، في man bash اكتب &% ثم اكتب Enter سيعرض فقط الأسطر التي تحتوي على "%"، لإعادة عرض الكل، اكتب &.ثم أدخل.
ومجرد استخدام الأمر killall:
وkillall taskname
لمزيد من المعلومات والمزيد من الخيارات المتقدمة، اكتب "killall رجل".