pgrep से एक या एक से अधिक PID को शीर्ष -p तर्क में पाइप करें


0

मैंने यह अच्छा सवाल देखा:

एक तर्क के रूप में पिछले कमांड के आउटपुट को पास करें

और जो मैं चाहता था उसे पाने की कोशिश की लेकिन किस्मत नहीं।

मैं अक्सर अपनी मैक्सिमा / लिस्प प्रक्रिया को देखना चाहता हूं और शीर्ष / htop / etc चलाने के बजाय मैंने सोचा कि मैं बस "maxima.core" खोज सकता हूं और शीर्ष पर "-p" ध्वज के इनपुट के रूप में उस खोज से लौटे पीआईडी ​​का उपयोग कर सकता हूं । यदि यह एक से अधिक रिटर्न देता है, तो यह एक सौदे का इतना बड़ा नहीं है।

1.) अगर मुझे पीआईडी ​​पता है, तो मैं इसका उपयोग कर सकता हूं:

top -p 10815 -o S -d 0

2.) पीआईडी ​​पाने के लिए मैं ऐसा करता हूं:

ps -fu <user> | pgrep -f maxima.core

जो सूची की तरह आउटपुट देता है,

10814
11989

लेकिन उन्हें समेटने की कोशिश मेरे लिए विफल है। मेरी कोशिश ज्यादातर इसी के आसपास केंद्रित है:

<user>@<user> ~ $ top -o S -d 0 -p $(ps -fu <user> | pgrep -f maxima.core)

इसके परिणामों को भी शामिल करने की कोशिश की गई: मैं दो या दो से शुरू होने वाले सामान्य मापदंडों को कैसे प्राप्त कर सकता हूं, आमतौर पर `n`?

top -o S -d 0 -p "${(ps -fu <user> | pgrep -f maxima.core)[@]}"

लेकिन इसने खराब प्रतिस्थापन की शिकायत की।

मैं बैश पर बहुत भरोसा करता हूं।


3
क्या आपके pgrepसमर्थन का संस्करण -d( --delimiter) विकल्प है? BTW मैं पाइपिंग शक ps -fu <user>में pgrepकुछ भी कर रही है - आप शायद pgrep के स्वयं के उपयोग करना चाहिए -fऔर -uविकल्प
steeldriver

आह, तुम सही हो, पीएस कुछ भी नहीं था। हां, मेरा pgrep सीमांकक का समर्थन करता है - यह procps-ng 3.3.10 से है। मुझे यह भी पता है कि टॉप-पी पीआईडी ​​की अल्पविराम से अलग सूची लेगा।
नैट

तो top -o S -d 0 -p "$(pgrep -d, -u <user> -f maxima.core)"क्या यह चाल है?
स्टीलड्राइवर

हाँ! यह बहुत अच्छा काम करता है - धन्यवाद! यदि आप इसे एक उत्तर देते हैं तो मैं इसे स्वीकार करूँगा
nate

जवाबों:


3

यदि आपका संस्करण pgrepसमर्थन -d( --delimiter) विकल्प का समर्थन करता है , तो आपको पीआईडी ​​के अल्पविराम से अलग सूची प्रदान करने के लिए इसका उपयोग करने में सक्षम होना चाहिए top:

top -o S -d 0 -p "$(pgrep -d, -u <user> -f maxima.core)"

-d(नहीं --delimiter) काफी पोर्टेबल होना चाहिए क्योंकि यह सोलारिस 7 पर मूल कार्यान्वयन में पहले से ही था। यदि नहीं, तो आप हमेशा पाइप कर सकते हैं paste -sd, -
स्टीफन चेज़लस

1
ध्यान दें कि maxima.coreयह भी मेल खाता है maxima-core(यह एक विस्तारित regexp है)। केवल (प्रक्रिया तर्क सूची में कहीं भी) 'maxima\.core' मिलान करने के लिए उपयोग करें maxima.core
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.