ব্যাশ এবং রেজেক্স ব্যবহার করে এক লাইনে একটি প্রক্রিয়া সন্ধান এবং হত্যা করুন


647

প্রোগ্রামিং চলাকালীন আমার প্রায়শই একটি প্রক্রিয়া মারতে হবে।

আমি এখন এটি করার উপায়টি হ'ল:

[~]$ ps aux | grep 'python csp_build.py'
user    5124  1.0  0.3 214588 13852 pts/4    Sl+  11:19   0:00 python csp_build.py
user    5373  0.0  0.0   8096   960 pts/6    S+   11:20   0:00 grep python csp_build.py
[~]$ kill 5124

আমি কীভাবে স্বয়ংক্রিয়ভাবে প্রক্রিয়া আইডিটি বের করতে এবং এটি একই লাইনে মেরে ফেলতে পারি?

এটার মত:

[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>

3
আমাকে বিশ্বাস কর! : 'ডি আপনি নির্বাচিত প্রথম উত্তরটি আপনার উত্তরে যে সমাধানটি আপনাকে বলেছিলেন তার চেয়ে জটিলতর। আমি বরং আপনার উপায় চয়ন করতে চাই।
সন্তোষ কুমার

প্রক্রিয়াটি রয়েছে কিনা তা যাচাই করার সর্বোত্তম উপায়: stackoverflow.com/questions/3043978/…
ট্রেভর বয়েড স্মিথ

উত্তর:


1397

ইন bash, আপনি করতে সক্ষম হবেন:

kill $(ps aux | grep '[p]ython csp_build.py' | awk '{print $2}')

এর কাজ সম্পর্কে বিশদ বিবরণ নিম্নরূপ:

  • psআপনি সকল প্রক্রিয়ার তালিকা দেয়।
  • grepফিল্টার আপনার অনুসন্ধানের স্ট্রিং উপর ভিত্তি করে, [p]একটি কৌতুক আপনি প্রকৃত গোছগাছ বন্ধ করতে grepপ্রক্রিয়া নিজেই।
  • awkশুধু আপনার প্রতিটি লাইনে, যা PID, হয় দ্বিতীয় ক্ষেত্র দেয়।
  • $(x)কনস্ট্রাক্ট উপায়ে চালানো xতারপর তার আউটপুট গ্রহণ করা এবং এটা কমান্ড লাইন উপর করা। psউপরের কনস্ট্রাক্টের ভিতরে সেই পাইপলাইনের আউটপুট হ'ল প্রক্রিয়া আইডির তালিকা যাতে আপনার মতো একটি কমান্ড আসে kill 1234 1122 7654

এখানে এটি প্রতিলিপি কার্যকরভাবে দেখায়:

pax> sleep 3600 &
[1] 2225
pax> sleep 3600 &
[2] 2226
pax> sleep 3600 &
[3] 2227
pax> sleep 3600 &
[4] 2228
pax> sleep 3600 &
[5] 2229
pax> kill $(ps aux | grep '[s]leep' | awk '{print $2}')
[5]+  Terminated              sleep 3600
[1]   Terminated              sleep 3600
[2]   Terminated              sleep 3600
[3]-  Terminated              sleep 3600
[4]+  Terminated              sleep 3600

এবং আপনি এটি সমস্ত স্লিপারগুলি শেষ করে দেখতে পাচ্ছেন।


grep '[p]ython csp_build.py'কিছুটা আরও বিশদে বিশদটি ব্যাখ্যা করা :

আপনি যখন sleep 3600 &অনুসরণ করেন ps -ef | grep sleep, আপনি এতে দুটি প্রক্রিয়া নিয়েই ঝোঁকেন sleep, sleep 3600এবং এবং grep sleep(কারণ তারা উভয়ই তাদের sleepমধ্যে রয়েছে, এটি রকেট বিজ্ঞান নয়)।

যাইহোক, এটি ps -ef | grep '[s]leep'দিয়ে কোনও প্রক্রিয়া তৈরি করবে না sleep, এটি পরিবর্তে তৈরি করে grep '[s]leep'এবং এখানে জটিল কৌশলটি রয়েছে: grepএটি এটি খুঁজে পায় না কারণ এটি নিয়মিত প্রকাশের সন্ধান করে "অক্ষর শ্রেণীর কোনও অক্ষর [s](যা sঅনুসরণ করা হয় ) leep

অন্য কথায়, এটি সন্ধান করছে sleepকিন্তু গ্রেপ প্রক্রিয়া grep '[s]leep'যা এতে নেই sleep

যখন আমাকে এটি দেখানো হয়েছিল (এসও তে কেউ এখানে), আমি তাত্ক্ষণিকভাবে এটি ব্যবহার শুরু করেছি কারণ

  • এটি যোগ করার চেয়ে কম প্রক্রিয়া | grep -v grep; এবং
  • এটি মার্জিত এবং স্নিগ্ধ, একটি বিরল সংমিশ্রণ :-)

2
@ প্যাক্সিডিয়াবল, আপনি কি এর জন্য একটি লিঙ্ক সরবরাহ করতে পারেন? আমি বিস্মিত হই কেন এটি কাজ করে।
গ্লেন জ্যাকম্যান

58
আপনি কেবল অজর - পিএস অক্স ব্যবহার করতে পারেন awk '/ [খ] ইম / {2} প্রিন্ট করুন , গ্রেপ লাগবে না
ইওলা

20
কেবল পিগ্রেপ বা পিকিল ব্যবহার করা ভাল
এনজিিক্স

2
একটি ছোট সমস্যা রয়েছে - যদি প্রক্রিয়াটি ইতিমধ্যে শেষ হয়ে যায় তবে এই লাইনটি killস্ট্যান্ডার্ড আউটপুট দিয়ে মন্থন করবেkill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
লিওনেল চ্যান

5
পরিবর্তে grep '[p]ython csp_build.py'আপনার কাছে ব্যবহার করতে পারেন: kill $(ps aux | grep 'python csp_build.py' | grep -v grep | awk '{print $2}')grep -vমেলে না এমন লাইনগুলি প্রদান করে।
usandfriends

138

যদি আপনার পিল থাকে,

pkill -f csp_build.py

আপনি যদি কেবলমাত্র প্রক্রিয়া নামের (সম্পূর্ণ যুক্তি তালিকার পরিবর্তে) গ্রেপ করতে চান তবে ছেড়ে দিন -f


1
আমি যখন এটি পরীক্ষা করেছিলাম তখন কিছুই হয়নি।
অরজানপ

8
আপনি সঠিক প্রক্রিয়াটি গ্রেপ করেছেন তা যাচাই করতে প্রথমে পিগ্রেপ ব্যবহার করুন। তারপরে সঠিক প্যাটার্নে আবার পিকিল ব্যবহার করুন।
ghostdog74

18
+1 টি। pgrepএবং pkillকাজ যতদিন আপনি যত্ন নিতে সঠিকভাবে প্রক্রিয়া নির্দিষ্ট করার। ডিফল্টরূপে কেবলমাত্র প্রক্রিয়াটির নামটি মিলে যায়, যা সম্ভবত এই ক্ষেত্রে কেবল "পাইথন"। pgrep -f "python csp_build.py"সম্পূর্ণ কমান্ডের সাথে মেলে ব্যবহার করুন ।
মিঃ স্পুর্যাটিক

3
আপনার সাথে হত্যা বাধ্য করার প্রয়োজন হতে পারেpkill -9 -f csp_build.py
studgeek

1
এটি সত্যই গ্রহণযোগ্য এবং সর্বোচ্চ ভোটের উত্তর হওয়া উচিত; এই সমস্ত অন্যান্য অবাস্তব লোকেরা খুব অযৌক্তিক। আমি আশা করি এই পৃষ্ঠাগুলি খুঁজে পাওয়া লোকেরা সেই প্রথম উত্তরটির বাইরে পড়বে।
জেসন সি

89

এক রৈখিক:

ps aux | grep -i csp_build | awk '{print $2}' | xargs sudo kill -9

  • কলাম 2 মুদ্রণ করুন: awk '{print $2}'
  • sudo alচ্ছিক
  • চালান kill -9 5124, kill -9 5373ইত্যাদি (মেরুন -15 আরও করুণামুক্ত তবে কিছুটা ধীর গতিতে)

বোনাস:

আমার .বাশ_প্রোফাইলে সংজ্ঞায়িত 2 টি শর্টকাট ফাংশনও রয়েছে (~ / .Bash_profile অসক্সের জন্য, আপনাকে দেখতে হবে আপনার * নিক্স মেশিনের জন্য কী কাজ করে)।

  1. পি কীওয়ার্ড
    • কীওয়ার্ডযুক্ত সমস্ত পি গোলাপের তালিকা প্রদর্শন করে
    • ব্যবহারের উদাহরণ: p csp_build, p pythonইত্যাদি

bash_profile কোড:

# FIND PROCESS
function p(){
        ps aux | grep -i $1 | grep -v grep
}
  1. কা কীওয়ার্ড
    • কে আইলস একটি এলএল প্রক্রিয়া যা এই কীওয়ার্ড রয়েছে
    • ব্যবহারের উদাহরণ: ka csp_build, ka pythonইত্যাদি
    • ঐচ্ছিক হত্যা স্তর যেমন: ka csp_build 15,ka python 9

bash_profile কোড:

# KILL ALL
function ka(){

    cnt=$( p $1 | wc -l)  # total count of processes found
    klevel=${2:-15}       # kill level, defaults to 15 if argument 2 is empty

    echo -e "\nSearching for '$1' -- Found" $cnt "Running Processes .. "
    p $1

    echo -e '\nTerminating' $cnt 'processes .. '

    ps aux  |  grep -i $1 |  grep -v grep   | awk '{print $2}' | xargs sudo kill -klevel
    echo -e "Done!\n"

    echo "Running search again:"
    p "$1"
    echo -e "\n"
}

অনুস্মারক - নতুন ফাংশনগুলি লোড করতে ব্যাশ শেল (টার্মিনাল) পুনরায় চালু করতে ভুলবেন না। অথবা source ~/.bash_profileনতুন ফাংশনগুলি আমদানি করতে বর্তমান শেলটি চালান (এটি আমি পছন্দ করি)।
a20

এখানে অন্যান্য উত্তরগুলির মতো অনেকেরও এটি অকেজো ব্যবহারেরgrep কারণে স্মরণীয়ভাবে ভোগে । মনে রাখবেন, যা কিছু মনে হচ্ছে grep x | awk '{ y }'তা সাধারণত ভাল এবং প্রায়শই awk '/x/ { y }'
দৃust় হয়

1
@ ট্রিপলির সাথে আপনি যে ওয়েবসাইটটি সংযুক্ত করছেন সেটি আপনার অধিকারের? আমি লক্ষ্য করেছি আপনি এটি বিভিন্ন মন্তব্য বিভাগে জুড়েছেন। আপনি কি এসইও বানাতে চাইছেন?
20

না, এসইও-তে আমার আগ্রহ নেই। আমি সচেতনতা বাড়ানোর আশা করছি।
ট্রিপলি

1
.. আপনার ওয়েবসাইটের সাথে লিঙ্ক করে যেন এটি কোনও প্রতিষ্ঠিত কর্তৃপক্ষের সাইট। খুশী হলাম। এছাড়াও, গ্রেপ দ্রুত হয়
20

16
killall -r regexp

-r, --regexp

প্রসারিত নিয়মিত অভিব্যক্তি হিসাবে প্রক্রিয়া নামের প্যাটার্নটি ব্যাখ্যা করুন।


15

ব্যবহার করার চেষ্টা করুন

ps aux | grep 'python csp_build.py' | head -1 | cut -d " " -f 2 | xargs kill

কিছুটা বদলাতে হয়েছিল। এটি কাজ করে। ধন্যবাদ। :) পিএস অক্স | grep 'পাইথন সিএসপি_মিল্ড.পি' | মাথা -1 | কাট-ডি "" -ফ 5 | xargs হত্যা
অরজানপ

3
ps aux | grep 'python csp_build.py' | awk '{print $2}' | xargs killআমার জন্য কাজ। থ্যানএক্স
রসিকা পেরেরা

মনে রাখবেন, বাচ্চারা, আওক সব কিছু grepকরতে পারে এবং এর বেশিরভাগই সহজ এবং মার্জিতভাবে করতে পারে। এর তুচ্ছ ঘটনা grep x y | awk '{ z }'সবসময় আরও ভাল লেখা awk '/x/ { z }' y- এর অকেজো ব্যবহারওgrep দেখুন ।
ট্রিপলি

11

আপনি কেবল ব্যবহার করতে পারেন pkill '^python*' রেজেক্স প্রক্রিয়া হত্যার জন্য ।

আপনি যদি খুন করতে চান বা খুন করার আগে আপনি কী দেখতে চান তা দেখতে চাইলে pgrep -l '^python*'যেখানে -l আউটপুটগুলি প্রক্রিয়াটির নামও দেয়। আপনি যদি ব্যবহার করতে না চান তবে pkillকেবল ব্যবহার করুন:

pgrep '^python*' | xargs kill


8

Pgrep ব্যবহার করুন - অনেক প্ল্যাটফর্মে উপলব্ধ:

kill -9 `pgrep -f cps_build`

pgrep -f কাকতালীয় "সিপিএস_বিল্ড" সহ সমস্ত পিআইডি ফিরিয়ে দেবে


2
আপনার কাছে থাকলে pgrepআপনারও থাকবে pkill। সর্বদা হিসাবে, ব্যবহার করবেন নাkill -9 যদি না আপনি কেন জানি kill -15(ডিফল্ট) বা kill -2কাজ করবে না।
ট্রিপলি

এটি @ নাথনেলের উত্তরের আরও খারাপ প্যারাফ্রেজের মতো দেখায় যা ভুল দিকনির্দেশকে বাদ দেয় -9এবং সঠিক আধুনিক কমান্ড প্রতিস্থাপন সিনট্যাক্স ব্যবহার করে। পরিবর্তে যে উপস্থাপন; অবশ্যই, pkillউত্তর এখনও ভাল।
ট্রিপলি

@ ট্রাইপলি এই ক্ষেত্রে হত্যা -9 হ'ল আমি যা চাই - সমস্ত অপরাধীকে চরম কুসংস্কারের সাথে সমাপ্ত করে। তদুপরি, আমি কোনও সমস্যা ছাড়াই বহু বছর ধরে কিল -9 ব্যবহার করেছি। আমার মতে, সর্বদা পিউরিস্টদের একটি শিবির বনাম প্রস্তুত-বাস্তবসম্মত বাস্তববাদীদের একটি শিবির থাকবে এবং আমি পরের (এই ক্ষেত্রে) এর অন্তর্ভুক্ত।
20

"আপনি কেন জানি না" অংশটি মিস করেছেন? আমি সবকিছুই সম্পন্ন করার জন্য করছি, তবে পায়ের মধ্যে নিজেকে গুলি করার একটি সাধারণ উপায় এটি না হওয়া পর্যন্ত আপনি -9আসলে কী বোঝায়।
ট্রিপলি

@ ট্রিপলি ওহে ট্রিপলি, আমি সম্প্রতি খুঁজে পেয়েছি যে আপনি ঠিক বলেছেন, মেরে ফেলা -15 একটি আরও ভাল পছন্দ কারণ এটি অ্যাপটিকে গুপ্তরূপে হত্যা করার সুযোগ দেয়। : আমি সেই অনুযায়ী আমার কোড পরিবর্তন করেছি stackoverflow.com/a/30486159/163382
a20

6

এটি কেবল পিডকে ফিরিয়ে দেবে

pgrep -f 'process_name'

সুতরাং যে কোনও প্রক্রিয়া এক লাইনে হত্যা করতে:

kill -9 $(pgrep -f 'process_name')

বা, যদি আপনি প্রক্রিয়াটির সঠিক নামটি জানেন তবে আপনি পিডোফও চেষ্টা করতে পারেন:

kill -9 $(pidof 'process_name')

তবে, আপনি যদি প্রক্রিয়াটির সঠিক নামটি না জানেন তবে pgrepআরও ভাল।

যদি একই নামে একাধিক প্রক্রিয়া চলমান থাকে এবং আপনি প্রথমে একটিটিকে হত্যা করতে চান:

kill -9 $(pgrep -f 'process_name' | head -1)

এছাড়াও লক্ষণীয় যে, আপনি যদি কেস সংবেদনশীলতা নিয়ে চিন্তিত হন তবে আপনি গ্রেপের মতোই -i বিকল্পটি যুক্ত করতে পারেন। উদাহরণ স্বরূপ:

kill -9 $(pgrep -fi chrome)

সিগন্যাল এবং pgrep সম্পর্কে আরও তথ্য man 7 signalবা এ man signalএবংman pgrep


5

আপনি এটি awk এবং ব্যাকটিক্স দিয়ে করতে পারেন

ps auxf |grep 'python csp_build.py'|`awk '{ print "kill " $2 }'`

অজানা প্রিন্ট কলাম 2 এ 2 and এবং ব্যাকটিক্স মুদ্রিত যে বিবৃতিটি চালায়।

তবে পাইথন প্রসেসের জন্য এটির প্রসেস আইডি / var / run এ সংরক্ষণ করার জন্য একটি ক্লিনার সলিউশন হবে এবং তারপরে আপনি কেবল সেই ফাইলটি পড়তে পারেন এবং এটি হত্যা করতে পারেন।


আপনি কি 5124 এবং 5373 উভয় প্রক্রিয়া মেরে ফেলবেন না? আমার ধারণা এটি কোনও সমস্যা নয়।
অরজানপ

এটি কোনও সমস্যা হওয়া উচিত নয় তবে আপনি সর্বদা
গ্রেপ

কিছুটা পরিবর্তিত কমান্ড দিয়ে পরীক্ষা করা হয়েছে। তবে এটি প্রক্রিয়াটি হত্যা করে না, কেবলমাত্র কিল <পিড> মুদ্রিত হয়েছে। PS অক্সফ | গ্রেপ '[পি] ইথন সিএসপি_মিল্ড.পি' | awk '{মুদ্রণ "হত্যা" $ 2}'
অরজানপ

কেবলমাত্র একটি সিস্টেমের সাথে "কিল" statement 2 স্টেটমেন্টের মুদ্রণ অদলবদল করতে হবে ("কিল" $ 2)। তারপরে এটি কাজ করে। :)
অরজানপ

5

আমার কাজটি ছিল নির্দিষ্ট ডিরেক্টরিতে স্থাপন করা রেজিএক্সপের সাথে মিলিত সমস্ত কিছুকে মেরে ফেলা (সেলেনিয়াম পরীক্ষার পরে সবকিছু থামেনি)। এটি আমার পক্ষে কাজ করেছে:

for i in `ps aux | egrep "firefox|chrome|selenium|opera"|grep "/home/dir1/dir2"|awk '{print $2}'|uniq`; do kill $i; done

-9বিকল্প killসম্ভবত খুব aggresive হয়। এটি তাদের সংস্থানগুলি মুক্ত করতে দেয় না।
বিরে

নিস! একমাত্র এক যে একাধিক ম্যাচ প্রক্রিয়া হতে পারে এই সত্যটি বিবেচনা করে! একটি ছোট নোট: সম্ভবত আপনি পাইপগুলিতে একটি "গ্রেপ-ভি গ্রেপ" বা এর মতো কিছু যুক্ত করতে চাইতে পারেন, যাতে গ্র্যাপ প্রক্রিয়াটি নিজেই আপনার প্রক্রিয়া তালিকায় প্রদর্শিত না হয়।
ব্র্যাড পার্কস

killএকাধিক প্রক্রিয়া গ্রহণ করে তাই লুপটি মূলত অকেজো; এবং এই পৃষ্ঠায় অন্য কোথাও উল্লিখিত হিসাবে, আপনি যদি না জানেন যে প্রক্রিয়াটি ঠিক সাড়া দেয় kill -9না আপনি ব্যবহার করা উচিত নয় । kill
ট্রিপলি

অপসারণ -9 কোনও বড় বিষয় নয়, কেন ডাউনটোট করুন। আপনি উত্তরটি আরও ভালভাবে সম্পাদন করতে চাইবেন।
সার্জ

5

কীওয়ার্ড দ্বারা প্রক্রিয়াটি হারাতে midoriউদাহরণস্বরূপ:

kill -SIGTERM $(pgrep -i midori)


3

শুধুমাত্র awk(এবং ps) ব্যবহার করে একটি পদ্ধতি :

ps aux | awk '$11" "$12 == "python csp_build.py" { system("kill " $2) }'

স্ট্রিং ইক্যুয়ালিটি টেস্টিং ব্যবহার করে আমি নিজেই এই প্রক্রিয়াটির সাথে মেলে prevent


কিছু কারণে আমি "পাইথন সিএসপি_বিল্ড.পি" তে হিট পাই না। তবে "পাইথন" একাই হিট।
অরজানপ

3
ps -o uid,pid,cmd|awk '{if($1=="username" && $3=="your command") print $2}'|xargs kill -15

প্রতিদিনের সীমাবদ্ধতার কারণে +1 করা যায় না, তবে বিকল্পের সাহায্যে ব্যবহার psকরা -oউপযুক্ত।
পি

পিএস আমাকে বেশি কিছু দেবেন না। [~] $ পিআইডি
পিডি টিটিআই

3

পিকিল -ফুল দিন

pkill -f /usr/local/bin/fritzcap.py

.py ফাইলের সঠিক পথ

# ps ax | grep fritzcap.py
 3076 pts/1    Sl     0:00 python -u /usr/local/bin/fritzcap.py -c -d -m

2

আমি এই জাতীয় কিছু ব্যবহার শুরু করেছি:

kill $(pgrep 'python csp_build.py')

1

একটি সাধারণ পিপিআইডি থেকে শুরু হওয়া আমাদের নিজস্ব প্রক্রিয়াগুলি প্রায়শই ঘন ঘন ঘন ঘন ঘন ঘন হ'ল, পতাকাটির সাথে সম্পর্কিত পিলিলটি–P আমার পক্ষে বিজয়ী। @ Ghostdog74 উদাহরণ ব্যবহার করে:

# sleep 30 &                                                                                                      
[1] 68849
# sleep 30 &
[2] 68879
# sleep 30 &
[3] 68897
# sleep 30 &
[4] 68900
# pkill -P $$                                                                                                         
[1]   Terminated              sleep 30
[2]   Terminated              sleep 30
[3]-  Terminated              sleep 30
[4]+  Terminated              sleep 30


1

কিছু ক্ষেত্রে, আমি একইভাবে এইভাবে প্রক্রিয়াগুলি হত্যা করতে চাই:

~ ~ 1000 এবং
[1] 25410
~ ~ 1000 এবং
[2] 25415
~ ~ 1000 এবং
[3] 25421
Id ~ পিডোফ ঘুম
25421 25415 25410
~ ~ হত্যা `পিডোফ ঘুম`
[2] - 25415 সমাপ্ত ঘুম 1000                                                             
[1] - 25410 সমাপ্ত ঘুম 1000
[3] + 25421 সমাপ্ত ঘুম 1000

তবে, আমি মনে করি এটি আপনার ক্ষেত্রে কিছুটা অনুপযুক্ত (


1

তাহলে pkill -f csp_build.pyপ্রক্রিয়া হত্যা না যে আপনি যোগ করতে পারেন -9একটি হত্যা signall যা উপেক্ষা করা হবে না পাঠান। অর্থাতpkill -9 -f csp_build.py


1

সমাধান হ'ল প্রক্রিয়াগুলি সঠিক প্যাটার্ন দিয়ে ফিল্টার করে দেওয়া, পিড পার্স করা এবং কিল প্রসেসগুলি সম্পাদন করার জন্য একটি যুক্তি তালিকা তৈরি করা হবে:

ps -ef  | grep -e <serviceNameA> -e <serviceNameB> -e <serviceNameC> |
awk '{print $2}' | xargs sudo kill -9

ডকুমেন্টেশন থেকে ব্যাখ্যা :

পিএস ইউটিলিটি একটি শিরোনাম লাইন প্রদর্শন করে, তারপরে নিয়ন্ত্রক টার্মিনালগুলি রয়েছে এমন আপনার সমস্ত প্রক্রিয়া সম্পর্কিত তথ্য সমেত লাইনগুলি প্রদর্শন করে।

-এগুলি সহ অন্যান্য ব্যবহারকারীর প্রক্রিয়াগুলি সম্পর্কে তথ্য প্রদর্শন করুন

-f ইউআইডি, PID, পিতা বা মাতা PID, সাম্প্রতিক CPU ব্যবহার, প্রক্রিয়া শুরু প্রদর্শন

, Grep ইউটিলিটি অনুসন্ধানসমূহ কোনো ইনপুট ফাইল দেওয়া নির্বাচন লাইন যে

-e প্যাটার্ন, --regexp = প্যাটার্ন ইনপুট অনুসন্ধানের সময় ব্যবহৃত একটি প্যাটার্ন নির্দিষ্ট করুন: নির্দিষ্ট ইনপুটগুলির কোনওটির সাথে মিলে যদি একটি ইনপুট লাইন নির্বাচন করা হয়। এই বিকল্পটি সবচেয়ে কার্যকর যখন একাধিক প্যাটার্ন নির্দিষ্ট করার জন্য একাধিক-বিকল্পগুলি ব্যবহার করা হয় বা কোনও প্যাটার্ন ড্যাশ (`- ') দিয়ে শুরু হয়।

xargs - যুক্তি তালিকা (গুলি) তৈরি করুন এবং ইউটিলিটি সম্পাদন করুন

হত্যা - সমাপ্ত বা একটি প্রক্রিয়া সংকেত

9 নম্বর সংকেত - কিল (না ধরা, অজ্ঞাতসারে কিল)

উদাহরণ :

ps -ef  | grep -e node -e loggerUploadService.sh - -e applicationService.js |
awk '{print $2}' | xargs sudo kill -9

0

ফায়ারফক্সকে স্ক্রিপ্ট করা এবং সিপিইউ বাশ করা হচ্ছে এমন সময় আমি এটি ব্যবহার করতে ব্যবহার করি :) আপনি মারা যেতে চান এমন অ্যাপ্লিকেশন দিয়ে 'ফায়ারফক্স' প্রতিস্থাপন করুন। আমি বাশ শেল - OS X 10.9.3 ডারউইনে আছি।

kill -Hup $(ps ux | grep Firefox | awk 'NR == 1 {next} {print $2}' | uniq | sort)


এর সাথে প্রতিস্থাপন grep Firefox | awk 'NR == 1 { next } ...'করা awk 'NR == 1 || $11 !~ /Firefox/ { next } ...'কেবল একটি প্রক্রিয়া সংরক্ষণ করে না, তবে নির্ভুলতাও উন্নত করে। এটা তোলে হার্ড পরিত্রাণ পেতে নয় sort | uniqবিশুদ্ধ awk মধ্যে হয় (যেহেতু অবশ্যই uniq | sortশুধু ভুল - এটা কোন সদৃশ যা সংলগ্ন নয় মিস্ হবে, এবং অযথা সাজানোর মাধ্যমে আপনাকে ত্রুটি আড়াল আউটপুট এর uniq)।
ট্রিপলি

0

আমি ব্যবহার করি gkill processname, যেখানে gkill নিম্নলিখিত স্ক্রিপ্ট:

cnt=`ps aux|grep $1| grep -v "grep" -c`
if [ "$cnt" -gt 0 ]
then
    echo "Found $cnt processes - killing them"
    ps aux|grep $1| grep -v "grep"| awk '{print $2}'| xargs kill
else
    echo "No processes found"
fi

দ্রষ্টব্য: এটি তাদের কমান্ড লাইনে "গ্রেপ" রয়েছে এমন প্রক্রিয়াগুলিকে হত্যা করবে না।


1
ইয়াক শেডের অনেকগুলি, আবার অনেকগুলি পুনর্বিন্যাসের মতো এটির অকার্যকর ব্যবহারgrep এবং অন্যান্য সাধারণ শেল স্ক্রিপ্ট অ্যান্টিপ্যাটার্নগুলি দিয়ে ছাঁটাই করা হয়।
ট্রিপলি

-1

নিম্নলিখিত আদেশটি কার্যকর হবে:

kill $(ps -elf | grep <process_regex>| awk {'print $4'})

যেমন।, ps -elf | grep top

    0 T ubuntu    6558  6535  0  80   0 -  4001 signal 11:32 pts/1    00:00:00 top
    0 S ubuntu    6562  6535  0  80   0 -  2939 pipe_w 11:33 pts/1    00:00:00 grep --color=auto top

kill -$(ps -elf | grep top| awk {'print $4'})

    -bash: kill: (6572) - No such process
    [1]+  Killed                  top

প্রক্রিয়াটি এখনও আটকে থাকলে, হার্ডকিলের জন্য "-9" এক্সটেনশনটি ব্যবহার করুন:

kill -9 $(ps -elf | grep top| awk {'print $4'})

আশা করি এইটি কাজ করবে...!


-1

বাশে এক লাইনে সমস্ত প্রক্রিয়া সন্ধান এবং হত্যা করুন।

kill -9 $(ps -ef | grep '<exe_name>' | grep -v 'grep' | awk {'print $2'})
  • ps -ef | grep '<exe_name>'- চলমান প্রক্রিয়া বিশদগুলির তালিকা দেয় (একচেটিয়া, পিড ইত্যাদি) যা প্যাটার্নটির সাথে মেলে। আউটপুট তালিকায় এই grepআদেশটি অন্তর্ভুক্ত করে যা এটি অনুসন্ধান করে। হত্যার জন্য এখন আমাদের এই grepকমান্ড প্রক্রিয়াটি উপেক্ষা করা উচিত ।
  • ps -ef | grep '<exec_name>' | grep -v 'grep'- এর সাথে আরও একটি গ্রেপ যুক্ত করা -v 'grep'বর্তমান গ্রেপ প্রক্রিয়াটি সরিয়ে দেয়।
  • তারপরে awkএকা প্রসেস আইডিটি ব্যবহার করুন ।
  • তারপরে এই কমান্ডটি ভিতরে রাখুন $(...)এবং এটি killসমস্ত কমান্ডের জন্য কমান্ডে পাস করুন ।

-1

কমান্ডের পিড তালিকা করতে আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন। লিনাক্সের সমস্ত প্রক্রিয়া দেখতে শীর্ষ বা উন্নততর ব্যবহারের জন্য হ্যাপ ব্যবহার করুন। এখানে আমি নামের একটি প্রক্রিয়াটি হত্যা করতে চাই

ps -ef | grep '/usr/lib/something somelocation/some_process.js'  | grep -v grep | awk '{print $2}'

এবং পিড যাচাই করুন। এটি অবশ্যই যথাযথ হতে হবে them তাদের হত্যা করার জন্য কমান্ড কমান্ডটি ব্যবহার করুন।

sudo kill -9 `ps -ef | grep '/usr/lib/something somelocation/some_process.js'  | grep -v grep | awk '{print $2}'`

উদাহরণস্বরূপ: - হটোপ প্রক্রিয়া তালিকা থেকে।

sudo kill -9 `ps -ef | grep '<process>'  | grep -v grep | awk '{print $2}'`

এটি আমার সমস্যাগুলি সমাধান করে। আপনি যদি দুর্ঘটনাক্রমে কোনও প্রক্রিয়াটি মারেন তবে সর্বদা প্রক্রিয়া পুনরায় চালু করতে প্রস্তুত থাকুন।

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