शीर्ष में एक विशिष्ट प्रक्रिया कैसे देखें


47

क्या किसी विशिष्ट प्रक्रिया को ट्रैक करने के लिए शीर्ष के साथ कोई अपेक्षाकृत सख्त विकल्प हैं?
आदर्श रूप से मानव पठनीय मूल्य द्वारा प्रक्रिया की पहचान करके? जैसे chromeया java

दूसरे शब्दों में, मैं सभी सामान्य सूचना शीर्ष प्रदान करना चाहता हूं, लेकिन परिणाम प्रदान किए गए मापदंडों को फ़िल्टर करने के लिए। 'क्रोम' या 'जावा'


1
क्या आपने कोशिश की है top | grep chrome?
पंड्या

1
आप ps -x | chromeपीड को प्राप्त करने के लिए भी इस्तेमाल कर सकते हैं (पीड को दिखाया गया है 2034) और फिरtop | grep 2034
पंड्या

top | grep chromeपूरी तरह से काम किया - धन्यवाद!
माइकल कोलमैन

@ पांड्या - इसके अलावा, मैं जिस प्रक्रिया की तलाश कर रहा था, वह केवल कुछ सेकंड्स तक चली (नोड्यूज एक एकीकरण परीक्षण के दौरान) - जिसका मतलब था कि जब मैं ps -x | process_nameपीआईडी ​​प्राप्त करता था, जब मैं फिर से प्रक्रिया चलाता था तो पीआईडी ​​अलग थी और इसलिए। मूल पीआईडी ​​इसकी पहचान नहीं करेगा।
माइकल कोलमैन

जवाबों:


24

आप बस का उपयोग कर सकते हैं grep:

NAME
       grep, egrep, fgrep, rgrep - print lines matching a pattern

SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       grep  searches  the  named  input  FILEs (or standard input if no files are named, or if a single
       hyphen-minus (-) is given as file name) for lines containing a match to the  given  PATTERN.   By
       default, grep prints the matching lines.

आउटपुट प्राप्त करने के लिए निम्नलिखित कमांड चलाएँ जो आप चाहते हैं (एक्स-क्रोम):

top | grep chrome

यहाँ हम प्रयोग कर रहे हैं grepपाइपलाइनों के साथ |तो topऔर grepरन समानांतर; topआउटपुट grep(इनपुट के रूप में) दिया गया और रुकने तक grep chromeमिलान लाइनों को फ़िल्टर करता है ।chrometop


1
धन्यवाद, मुझे पता है कि अन्य लोगों की अपनी प्राथमिकताएं हैं, लेकिन मुझे यह उत्तर पसंद है क्योंकि यह समझना आसान है, और इसलिए भविष्य में इसे याद रखना भी आसान है! - मेरा उत्थान होगा, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है ...
माइकल कोलमैन

3
यह केवल तभी काम करता है जब प्रक्रिया शीर्ष पर प्रदर्शित आउटपुट में हो। मुझे लगता है कि @ रमेश का जवाब स्वीकार किया जाना चाहिए
jb

@JamieBullock प्रश्न topकेवल और ओपी के आधार पर प्रक्रिया को फ़िल्टर करना चाहता है top
पंड्या

@ पांड्या वास्तव में, मैं अपनी पिछली टिप्पणी वापस लेता हूं क्योंकि यह मेरे कोड में एक गलती पर आधारित थी। फिर भी मुझे लगता है कि @ रमेश का जवाब बेहतर है (और शीर्ष पर आधारित प्रक्रिया को भी फ़िल्टर करता है)। मैं आसानी से तुम्हारा तोड़ सकता हूँ जैसेsleep 10 & top | grep sleep
jb

मुझे unix.stackexchange.com/a/165343/48973 बेहतर लगता है क्योंकि यह हेडर दिखाता है।
रयान

39

यहाँ मेरे अन्य उत्तर से , आप कुछ ऐसा कर सकते हैं,

top -p `pgrep "java"`

4
top -p `pgrep "java"`मुझे बैश शेल में निम्नलिखित त्रुटि देता है top: -p requires argumentशीर्ष -ppgrep -d ',' "apache2" ने मेरे लिए काम किया, लेकिन मुझे वास्तव में समझ नहीं आया कि कमांड क्या कर रहा था - क्या यह शीर्ष करने के लिए कई तर्कों में खिलाने का तरीका है?
माइकल कोलमैन

@ रमेश आपको pidकाम करने के लिए अलग से अल्पविराम देने की आवश्यकता है ।
कन्नन मोहन

3
यह सही जवाब है।
j03m

1
+1 यह सही उत्तर है। "शीर्ष | grep Chrome" बल्कि बर्बर है, क्योंकि यह शीर्ष पर से सभी "OUTPUT" को नहीं हटाता है, हेडर और कॉलम लेबल जैसे सामान खो देता है। Pgrep से आउटपुट के साथ एक सबशेल का उपयोग करना यूनिक्स दर्शन का एक सही अनुप्रयोग है।
जॉन एम नाग्लिक

2
@loretoparisi ऐसा हो सकता है क्योंकि चयनकर्ता आप कई प्रक्रियाओं से मेल खा रहे हैं। एक या अधिक मिलान प्रक्रियाओं के साथ काम करने वाले आदेश के लिए यह उत्तर देखें ।
माइकल

21
top -p `pgrep -d "," java`

स्पष्टीकरण:

  1. top -p pid1,pid2: कई प्रक्रिया जानकारी दिखाएं, पीआईडी ​​को अलग किया जाना चाहिए ,
  2. pgrep -d "," java: सभी जावा प्रोग्राम के पाइड्स को प्रिंट करें, न्यूड्स डिफ़ॉल्ट रूप से अलग हो जाते हैं। शीर्ष द्वारा आवश्यकतानुसार -d ","इसे अलग करने के लिए उपयोग करें ,

यदि आपको त्रुटि दिखाई देती है top: -p argument missing, तो इसका मतलब है कि कोई जावा प्रोग्राम नहीं चल रहा है, अर्थात pgrep का कोई आउटपुट नहीं है।


1
यह समाधान top -p केवल pgrep "java" `` का उपयोग करने से बेहतर काम करता है । धन्यवाद।
लोरेटोपरसी

1
रोकें जाँच करके त्रुटि pgrepके बाहर निकलने के कोड:pids="$(pgrep -d, java)" && top -p "$pids"
Syme

12

OpenBSD में top, बस gउस कमांड नाम को दबाएँ और दर्ज करें जिसे आप फ़िल्टर करना चाहते हैं।

में topजैसे Ubuntu, प्रेस पर oऔर दर्ज जैसे COMMAND=chromeही से प्रविष्टियां दिखाने के लिए COMMANDस्तंभ के बराबर हैं chrome

topउबंटू के समान कार्यान्वयन का उपयोग करने वाले लिनक्स पर, topमैनुअल में एक विंडो अनुभाग में फ़िल्टरिंग पढ़ें ।


7

अन्य अच्छे उत्तर प्रदान किए गए हैं, लेकिन मैंने कुछ समय पहले एक स्क्रिप्ट बनाई थी, जिसे मैंने पोपट नाम दिया था, जो मुझे अच्छी तरह से परोसती है:

#!/bin/sh
top -p $(pidof "$@" |sed s#\ #,#g) 2>/dev/null
if [ $? -ne 0 ]; then
  echo No processes with the specified name\(s\) were found
fi

यह निर्दिष्ट (जैसे ptop bash chrome) होने के लिए कई प्रक्रिया नामों का समर्थन करता है और यदि कोई निर्दिष्ट प्रक्रिया चल रही है तो कोई प्रक्रिया नहीं है, तो इसमें एक अच्छा त्रुटि संदेश प्रदान करता है।


3

यदि आप topसंदर्भ के लिए अन्य सभी प्रक्रियाओं को ध्यान में रखना चाहते हैं , तो आप Lअपनी प्रक्रिया की खोज करने के लिए प्रेस कर सकते हैं :

Locate string chrome

यह chromeनाम के साथ किसी भी प्रक्रिया को उजागर करेगा , और इसे देखने में लाएगा। &अगले मैच में जाने के लिए उपयोग करें ।

आप cप्रक्रिया नाम और पूर्ण कमांड दिखाने के बीच स्विच करने के लिए दबा सकते हैं ।


यह ^ क्योंकि RTFM लोग! man top | less +/5d
cprn

0

विशिष्ट प्रक्रियाओं को अलग करने के लिए आप शीर्ष में फ़िल्टर का भी उपयोग कर सकते हैं। फ़िल्टर प्रॉम्प्ट को लाने के लिए 'O' दबाएँ। फिर FIELD = मान के रूप में एक फ़िल्टर स्वरूपित करें। उदाहरण के लिए, सभी tmux प्रक्रियाओं को फ़िल्टर करने के लिए, उपयोग करें:

COMMAND=tmux

फ़िल्टर रीसेट करने के लिए '=' का उपयोग करें। शीर्ष मैन पेज में 'फ़िल्टरिंग' शीर्षक वाला अनुभाग देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.