আমি কি মারার সাথে পিগ্রেপ চেইন করতে পারি?


31

আমি লক্ষ্য করেছি যে |প্রথম কমান্ডের ফলাফল অন্যটিতে পাঠাতে ব্যবহৃত হয়। আমি নামের সাথে মেলে এমন সমস্ত প্রক্রিয়াটি হত্যা করতে চাই।
পিগ্রিপ সাধারণত এটি করে:

$ pgrep name
5089
5105

এবং একাধিক যুক্তি এর সাথে কাজ করছে বলে মনে হচ্ছে kill:

sudo kill 5089 5105

তবে এটি ভুল:

pgrep name | kill

তাহলে কীভাবে এটি সঠিকভাবে করবেন?


3
pkill। এবং যদি এটি বিদ্যমান না kill $(pgrep ...),।
মাইকেল

আমি কেবলমাত্র সেই নির্দিষ্ট কমান্ডগুলির কারণেই জিজ্ঞাসা করছিলাম না বরং কমান্ড শৃঙ্খলা সম্পর্কে আরও ভালভাবে বুঝতে পারি। তবে আমি প্রশ্ন স্কোর থেকে দেখতে পাচ্ছি, বোঝার জন্য বোঝানো প্রশ্নগুলি অবাঞ্ছিত ...
টোম জ্যাটো - মনিকা

আপনি যদি প্রশ্নটি আরও সাধারণ করে তুলতে চান এবং এটি কোনও সদৃশ নয় তা নিশ্চিত করতে চান তবে আমি এটিতে ভোট দিতে পারি।
মাইকেল

দুঃখিত, দুর্ঘটনাক্রমে আমার আগের মন্তব্য মুছে ফেলা হয়েছে। আমি একটি ট্যাবলেটে আছি এবং এই সাইটে একে অপরের পাশে ছোট ছোট বোতাম রয়েছে।
মাইকেল

আমি কেবল বলছিলাম যে আমি উজ্জীবিত হয়েছি কারণ আপনার প্রশ্নটি এমন কিছু জিজ্ঞাসা করছে বলে মনে হচ্ছে না যা আপনি শিখতে পারেন নি man pgrep। ডাউনভোট বোতামটি বলছে এটি যখন তখন কোনও প্রশ্ন কোনও গবেষণার প্রচেষ্টা না দেখায় এবং আমি আপনার প্রশ্নে কোনও দেখতে পাই না। যদি তা কঠোর মনে হয় তবে দুঃখিত।
মাইকেল

উত্তর:


42

এটা চেষ্টা কর:

pgrep name | xargs kill

আপনি যদি ব্যবহার করেন pgrep name | killতবে এর আউটপুটটি স্টিডিনের pgrep nameফিড kill। কারণ killস্টিডিনের কাছ থেকে যুক্তিগুলি পড়ে না, সুতরাং এটি কার্যকর হবে না।

ব্যবহার করে xargs, এটি killস্ট্ডিন থেকে আর্গুমেন্ট তৈরি করবে । উদাহরণ:

$ pgrep bash | xargs echo
5514 22298 23079

5
স্পেস বনাম নিউলাইনের সাথে কিছুই করার নেই। কেবল কারণ খুন স্টিডিনে যুক্তিগুলি পড়ে না।
মাইকেল

@ মাইকেল: আমার ভুল, স্থির
কিউংলম


5

সাধারণের পরিবর্তে নির্দিষ্টটির চেয়ে উত্তর দেওয়া ...

পাইপগুলি একটি প্রোগ্রাম থেকে অন্য প্রোগ্রামে ইনপুট হিসাবে আউটপুট পাস করার জন্য ।

দেখে মনে হচ্ছে আপনি একটি প্রোগ্রামের আউটপুট অন্য প্রোগ্রামে কমান্ড লাইন আর্গুমেন্ট হিসাবে ব্যবহার করার চেষ্টা করছেন যা ভিন্ন।

এটি করতে, কমান্ড প্রতিস্থাপন ব্যবহার করুন ।

উদাহরণস্বরূপ যদি আপনি চালাতে চান

sudo kill 5089 5105

এবং আপনার একটি কমান্ড রয়েছে pgrep nameযা আউটপুট করে5089 5105

আপনি তাদের একসাথে রাখুন

sudo kill $(pgrep name)

অনেক ধন্যবাদ. আমি আশা করি এটি অন্যান্য নতুনদেরকেও সহায়তা করবে।
টোমা জ্যাটো - মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.