পিএস অক্স ব্যবহার করে প্রসেস আইডি


9

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

ps aux|grep netbeans

আমি আউটপুট পেতে

pre      18775  1.2  0.0  12524  1972 pts/3    S    20:17   0:00 

যেখানে 18775 প্রক্রিয়াটির পিআইডি ইত্যাদি নির্দিষ্ট করে।

তারপরে আমি এটি ব্যবহার করে হত্যা করি

kill 18775.

যার উপর নেটবিয়ান্স ইউআই অদৃশ্য হয়ে যায়। আমি যদি প্রথম কমান্ডটি ব্যবহার করে পিডটি পেতে চেষ্টা করি তবে আমি এখনও পেতে পারি:

pre      19137  0.0  0.0   9136  1068 pts/3    S+   20:19   0:00 grep --color=auto netbeans

যদি প্রক্রিয়াটি হত্যা করা হয় তবে এটি এখনও উপরের আউটপুটটি দেখায় কেন?


1
এটি আপনাকে নেটবিন প্রক্রিয়াটি দেখাচ্ছে না - এটি গ্রেপ প্রক্রিয়াটি দেখায় যা দিয়ে পিএস অক্স পাইপ করা হচ্ছে! যেহেতু এই প্রক্রিয়াটি হ'ল grep netbeans, সেই প্রোগ্রামটিই আপনি লাইনের ( grep --color=auto netbeans) শেষে
দেখছেন

উত্তর:


16

গ্রেপ নিজেই গ্রেপিং হয়। এর মতো কিছু চেষ্টা করুন:

ps aux |grep [n]etbeans

এটি আউটপুটটিতে নিজেকে প্রদর্শন করা থেকে গ্রেপ রাখে


2
এটি কাজ করে তবে এটি খুব সুন্দর নয়। আপনি করতে পারেন ps aux | grep netbeans | grep -v grep। পরিবর্তে pgrep ব্যবহার করুন।
মার্টিন উয়েডিং

1
@ ক্যুওভারফ্লো pgrepসুন্দর হবে তবে এটি কেবল প্রক্রিয়া নামের সাথে মেলে। প্রথম প্যাটার্নটি যে কোনও কলামের সাথে মেলে ps। (উদাহরণস্বরূপ, কিছু পাইথন বা জাভা চলার সময়, pgrep না সঠিক জিনিস grepping হবে একই অবস্থা ছিল। pkillএবং তাই ..)
Izkata

5

কখনওps একসাথে ব্যবহার করবেন না grep

বরং, ব্যবহার killall netbeans, pkill netbeansএটি হত্যা করা হয়। প্রক্রিয়া আইডি জন্য pgrep netbeans

আরো PS এবং grep


5
এটি আমি শুনেছি সবচেয়ে অব্যর্থ পরামর্শ। যতক্ষণ না লোকেরা জানেন যে গ্রেপ প্রক্রিয়াটি পিএসের আউটপুটে কেমন হবে (এটি "গ্রেপ" দিয়ে শুরু হয়) তবে দুটি একসাথে ব্যবহার করার কোনও বিপদ নেই। আমি কোনও স্ক্রিপ্টে একটি হত্যাকাণ্ড ব্যবহার না করার বিষয়ে পরামর্শটি বুঝতে পারি, তবে এটি বিন্দুটির পাশে রয়েছে।
ওভ্যাঙ্গেল

3
এবং আমি মনে করি পিগ্রিপ আরও খারাপ, কারণ এটি আপনাকে 'হত্যা' (পিগ্রিপ vi *) 'বা আশ্চর্যরকম কিছু যেমন অনিরাপদ বলে অনুরোধ করছে।
ওভ্যাঙ্গেল

1
এটি এই পৃষ্ঠায় সর্বাধিক অকেজো উত্তর, যেমন pgrep, pkillএবং ঠিক তেমন ম্যাচ প্রক্রিয়া নাম - যে কোনও কিছু ব্যাখ্যা করা (জাভা, পাইথন, বাশ, ইত্যাদি ...) ব্যবহার করে কেবল একই প্রক্রিয়া নামের অধীনে অন্যদের থেকে আলাদা করা যায় ps
ইজকাটা

3
@ ইজকাটা - pgrep এবং pkill এর জন্য -f ব্যবহার পুরো কমান্ড লাইনের সাথে মিলবে। আপনার উল্লেখ অনুসারে দোভাষীদের অধীনে স্টাফগুলি ম্যাচ করার চেষ্টা করার সময় এটি দরকারী। নিজেকে পায়ে গুলি করার এটিও একটি ভাল উপায় কারণ এটি আপনার কমান্ড লাইনের যে কোনও জায়গায় আপনার প্যাটার্নের উল্লেখ করে সুখে খুশি মেরে ফেলবে :)
রোডম্র

4

কারণ এটি সেই গ্রেপ প্রক্রিয়াটির পিআইডি যা পরে চালানোর জন্য সারিবদ্ধ ps aux


@ ওভাঙ্গাল- পলক আমি কখনই এটি সম্পর্কে ভেবে দেখিনি! : ডি ধন্যবাদ!
পি রমেশ

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