প্রদত্ত নামের সাথে সমস্ত প্রক্রিয়া কীভাবে হত্যা করবেন?


16

আমি কমান্ড চালাচ্ছি ps -A | grep <application_name>এবং প্রক্রিয়াটির তালিকা এরকমভাবে পাচ্ছি :

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>

: আমি তালিকা থেকে সব প্রক্রিয়া হত্যা করতে চান 19440, 21630, 22694।

আমি চেষ্টা করেছি ps -A | grep <application_name> | xargs kill -9 $1তবে এটি ত্রুটিগুলি নিয়ে কাজ করে।

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>

আমি কীভাবে এটি করুণভাবে করতে পারি?

উত্তর:


25
pkill -f <application_na>

<application_na>তাদের নামের প্যাটার্ন ধারণ করে এমন সমস্ত প্রক্রিয়া মেরে ফেলবে ।

man pkill


9

সমস্যাটি এই যে ps -A | grep <application_name> | xargs -n1আউটপুট ফেরত দেয়

19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>

আপনি আউটপুট awkএকটি কলাম প্রথম পেতেps ব্যবহার করতে পারেন ।

ps -A | grep <application_name> | awk '{print $1}' | xargs -n1

পিআইডি-র তালিকা ফিরিয়ে দেবে

19440
21630
22694

এবং যুক্ত করার জন্য kill -9 $1আপনার কাছে একটি কমান্ড রয়েছে যা সমস্ত পিআইডি হত্যা করে

ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1

এটি নিখুঁত আমি এটি বাশ স্ক্রিপ্টে পরীক্ষা করি এটি প্রসেসরকে ত্রুটিহীনভাবে মেরে ফেলে + প্রক্রিয়াটি শুরু না হলেও এটি যে ত্রুটি দেখায় তা আমি চাই না, এখানে ffmpeg প্রসেসর হত্যাকারীর উদাহরণ nano /usr/bin/ffmpegk ,। । । । ps -A | grep ffmpeg | awk '{print $1}' | xargs kill -9 $1 । । । । chmod a+rx /usr/bin/ffmpegk
— সালেম এফ

আমার কোনও সমস্যা নেই যেখানে আমি kill -9কোনও প্রক্রিয়া মেলে না তার ফলাফল পেয়েছি
— ড্যানিয়েল এফ

1
এর পরিবর্তে grep, আপনি awkনামের সাথে মেলে ব্যবহার করা উচিত :ps -A | awk "\$4 == \"$1\" { print \$1; }"
— টবি স্পিড

0

killall এটা করতে পারে।

$ killall application_name

অ্যাপ্লিকেশন নামে নিয়মিত প্রকাশের অনুমতি দেওয়ার জন্য কি সমস্ত হ'ল?
— asukasz D. Tulikowski

killall --regexp "appl.*me"যদিও বিভিন্ন কিল্ল বাস্তবায়ন হতে পারে। দেখুন man killall।
— rudimeier

কিল্ল যথেষ্ট নয় কখনও কখনও আমি প্রক্রিয়াটি মারার জন্য এটি তিনবার প্রেরণ করা প্রয়োজন, এবং এমনকি এটি হত্যা করতে kill -9 pidব্যর্থও হলাম আমার পক্ষে কেবলমাত্র দ্রুত সমাধানের সমাধান হ'ল আমি মনে করি @ ইউকাসজডি.টুলিকভস্কি বিশেষত বাশ স্ক্রিপ্টগুলির জন্য সেরা কাজ সমাধান।
— সালেম এফ

-1
ps -eaf | grep -i applicationname| grep -iv 'grep'| awk '{print "kill -9" " "  $2}'|sh

যদিও আমি এখনও এই প্রশ্নের পক্ষে ভোট দিয়েছি নি, আপনি অন্যান্য সমস্যার সমাধানের তুলনায় কেন এটি আলাদা বা ভাল - আপনি এটি বর্ণনা করেন নি - যা এর সাথে খুব সমান - - বা ওপি তাদের প্রকরণের কারণে কেন সমস্যায় পড়েছিল তা বর্ণনা করেছেন।
— জেফ শ্যাচলার

-2

আমার দৃষ্টিভঙ্গি @ Łukasz D. Tulikowskiএর সাথে সমান। পরিবর্তে ব্যবহার grep <application_name>; আমি ব্যবহার করেছি grep "[a]pplication_name", যা এর নিজস্ব প্রক্রিয়া কমান্ড লাইনের সাথে মেলে না।

বর্গক্ষেত্র বন্ধনী এক্সপ্রেশনটি grepএর চরিত্র শ্রেণীর প্যাটার্ন মিলের অংশ। (রেফারেন্স) ।


আপনি আউটপুট awkএকটি কলাম প্রথম পেতে ব্যবহার করতে পারেন ps।

ps -A | grep "[a]pplication_na" | awk '{print $2}' | xargs -n1

পিআইডি-র তালিকা ফিরিয়ে দেবে

7644
407
406

পরে যুক্ত করার জন্য kill -9 $1আপনার একটি কমান্ড রয়েছে যা সমস্ত পিআইডি হত্যা করে

ps aux | grep "[a]pplication_na" | awk '{print $2}' | xargs kill -9 $1

এর grepপরিবর্তে awkপরীক্ষা আরও সঠিকভাবে করার জন্য কেন ? grepউদাহরণগুলিকে সাবস্ট্রিং হিসাবে লক্ষ্য অন্তর্ভুক্ত করে এমন নামের সাথে মিলবে।
— টবি স্পিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.