'शीर्ष' के साथ विशिष्ट प्रक्रियाओं का चयन कैसे करें?


18

एक कार्यक्रम के कई उदाहरण होने के मामले में, रनिंग pidof programदेता है:

`1 2 3`

top -pकॉमा-सीमांकित तर्कों को स्वीकार करता है 1, 2, 3:।

इसका मतलब है कि top -p `pidof program`काम नहीं करेगा:

    top: unknown argument '1'
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

क्या आप मुझे दिखा सकते हैं कि यह कैसे करना है। मैं awk, sed, आदि से परिचित नहीं हूँ ...

जवाबों:


25

sedइस तरह सरल चीजों के लिए एक विकल्प है tr:

top -p $(pidof program | tr ' ' ',')

tr आसानी से रिक्त स्थान की एक चर संख्या को भी संभाल सकते हैं:

tr -s ' ' ','

इसके अतिरिक्त, यदि आपके पास यह उपलब्ध है, तो pgrepयहां अच्छा काम कर सकते हैं:

top -p $(pgrep -d , program)

सुनिश्चित करें कि आप के बीच एक स्थान छोड़ दें -dऔर ,अल्पविराम तर्क है (अपराधी)।

यह भी ध्यान दें, कि pgrep "प्रोग्राम" के प्रत्येक परिणाम को लौटाएगा, इसलिए यदि आपके पास "प्रोग्राम-फू" नामक एक प्रक्रिया है, तो यह भी लौटा दी जाएगी (इसलिए नाम pgrep)।


एक से अधिक प्रोग्राम के लिएtop -p $(pgrep -d, "(nginx|mysql)" )
user2037659


3

यह एक से अधिक कार्यक्रमों पर नजर रखने के लिए अच्छी तरह से काम करता है:

top -p `pgrep -d, -f program1`, `pgrep -d, -f program2`

बेहतर उपयोग:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.