একাধিক প্রক্রিয়া কীভাবে হত্যা করা যায়


21

ব্যবহারের নিধনের প্রক্রিয়াটির পিআইডি সন্ধান করতে:

pgrep <process command>

আমি তারপরে পিআইডি ফিরে মেরে কিল কমান্ড ব্যবহার করি pgrep <process command>

kill <PID>

এই কমান্ডগুলি কী এক সাথে একত্রিত করা যায় তাই পিআইডি বা পিআইডি ফিরে আসাটিকে হত্যা করতে পারে pgrep <process command>? বা কমান্ড নামে একাধিক প্রক্রিয়া মেরে ফেলা কোন পদ্ধতি আছে?

কিছুটা এইরকম : kill(pgrep <name of process>)


3
আপনি চেষ্টা করেছেন pkill? বিকল্পভাবে, আপনি ব্যবহার করতে পারেন xargs
ম্যাথিউরক

1
নোট করুন যে ম্যান পেজগুলি এই জাতীয় স্টাফের জন্যও ভাল। প্রায়শই তারা আপনাকে কেবল কমান্ডটি কীভাবে ব্যবহার করতে হয় তা জানায় না, সম্পর্কিত কমান্ডগুলি সম্পর্কেও আপনাকে জানায়। এই ক্ষেত্রে, pgrepম্যান পৃষ্ঠাটি pkillসমস্ত জায়গার উপরে উল্লেখ করেছে (যেমন 2 প্যাকেজগুলি একই প্যাকেজ থেকে আসে)।
প্যাট্রিক

উত্তর:


27

আপনি পিকিল ব্যবহার করতে পারেন:

pkill httpd

আপনি প্রক্রিয়া বিকল্প ব্যবহার করতে চাইতে পারেন (যদিও এটি পরিষ্কার হিসাবে নয়):

kill $(pgrep command)

এবং আপনি ব্যবহার করতে পারেন xargs:

pgrep command | xargs kill

4
আমি একটি উত্তরে অনুরূপ কাজ করেছি এবং এটি আমার কাছে উল্লেখ করা হয়েছিল যে আমি একটি রেসের শর্ত প্রবর্তন করেছি। প্রক্রিয়া আইডিগুলি কল করার সময় pgrepএবং অভ্যন্তরে অবৈধ হতে পারে kill। শুধু ব্যবহার pkill
কুসালানন্দ

3
@ কুসালানন্দ pkillপ্রক্রিয়া তালিকাটি পাওয়া এবং প্রকৃতপক্ষে সংকেত প্রেরণের মধ্যেও একই ঘটনা ঘটতে পারে, সেক্ষেত্রে দেখতে পারা আরও শক্ত।
হাবস

1
আমি একটি উত্তর রচনা করার চেষ্টা করতে যাচ্ছিলাম kill $(ps|head -1)যা দৌড়ের অবস্থা এড়ানোর মতো কিছু লুপ করেছে ... তবে এটি এড়ানোর কোনও উপায় নেই। প্রক্রিয়াটি পাইপলাইনের যে কোনও পর্যায়ে মারা যেতে পারে।
রস প্রেসার

কেবল পিকেলে সাবধান থাকুন কারণ কিছু প্রোগ্রামের একাধিক উদাহরণ চলতে পারে এবং আপনি সেগুলি সমস্ত হত্যা করতে নাও পারেন। প্রথমে পিগ্রেপ চালানো ততক্ষণ সহায়তা করবে যতক্ষণ না আপনি পিগ্রিপ এবং পিকিল (রেস) চালানোর সময়কালের মধ্যে আর একটি শুরু না হয়।
জো

1
এমনকি একটি সি প্রোগ্রামও রেসের শর্তটি এড়াতে পারে না, উইন্ডোটি আরও ছোট হবে। এটি সত্যই পরমাণুভাবে করার একমাত্র উপায় হ'ল এমন একটি সিস্টেম কল যুক্ত করা যা নাম দ্বারা প্রক্রিয়াগুলি মেরে ফেলে। তবে প্রক্রিয়া আইডিগুলি খুব দ্রুত পুনরায় ব্যবহার করা হবে না, সুতরাং বিপদটি কার্যত অস্তিত্বহীন।
বারমার

17

আপনি killallযেমন ব্যবহার করতে পারেন , যেমন

killall firefox

SIGTERMসমস্ত firefoxপ্রক্রিয়া প্রেরণ ।


8
নোটের killallবিভিন্ন ইউনিক্স সিস্টেমে আলাদা অর্থ রয়েছে - আপনি যদি কোনও লিনাক্স সিস্টেমের না হন তবে ডকুমেন্টেশন পরীক্ষা করার বিষয়টি নিশ্চিত করুন make
র্যান্ডম 832

killall -KILL firefoxSooo ফলপ্রসূ বোধ করতে পারেন ।
পাইপ

এর অ-বহনযোগ্যতা killallহ'ল আমি কখনই এটি ব্যবহার করি না। killallউদাহরণস্বরূপ একটি সোলারিস বক্সে চালানো বিপর্যয়কর।
প্যাট্রিক

9

হ্যাঁ, আপনি আউটপুটটির উপর ব্যাশ বৈশিষ্ট্য এবং লুপিং ব্যবহার করতে পারেন।

$ for proc in $(pgrep <process command>); do kill $proc; done

আমি পেয়েছিkill <no>:failed: operation not permitted
টিমো

সম্ভবত আপনার কাছে সঠিক অনুমতি নেই বা প্রক্রিয়াটি আর বিদ্যমান নেই, দয়া করে উল্লেখ করুন: superuser.com/questions/1175485/…
lcipriani

0

আপনি অ্যারে দিয়ে একাধিক প্রক্রিয়া মেরে ফেলতে পারেন। এই ক্ষেত্রে আপনি যেমন বিকল্প নির্দিষ্ট করতে পারেন $ip, $hostnameবা অনুরূপ কিছু।

ip=your_ip_address; declare -a arr=$(ps aux|grep tail|grep $ip|awk '{print $2}'); for pid in ${arr[@]}; do kill -9 $pid; done;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.