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


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.