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.