Begrenzen Sie die Ausgabe des Befehls TOP auf einen bestimmten Prozessnamen
Rufen Sie den Befehl top ein, erhalten Sie alle Laufenden Prozesse. Aber wie kann ich limit die Ausgabe nur zu einem bestimmten Prozess Namen wie "java"?
Habe ich versucht, dieses
top -l 2 | grep java
aber auf diese Weise bekommen Sie nur Momentaufnahmen und nicht um eine fortlaufend aktualisierte Liste. Und top -l 0 | grep java ist nicht wirklich klar.
InformationsquelleAutor der Frage Alex | 2010-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevorzuge ich die folgenden kann ich ja immer noch top-interaktiv suchen, ohne die pids jedes mal, wenn ich es:
Natürlich, wenn die Prozesse ändern, müssen Sie erneut den Befehl ausführen.
Erklärung:
pgrep process-name
gibt eine Liste von Prozess-ids, die durch Zeilenumbrüche getrenntetr "\\n" ","
übersetzt diese Zeilenumbrüche in Kommas, da oben will eine Komma-getrennte Liste von Prozess-idssed
ist ein stream-editor, undsed 's/,$//'
hier verwendet wird, entfernen Sie die nachfolgende KommaInformationsquelleAutor der Antwort Rick Byers
Finden Sie die pids der Prozesse, die Sie überwachen möchten, und verwenden Sie dann die
-p
option, die ermöglicht es Ihnen, eine Liste von pids dietop
Befehl.Beispiel:
(Ich glaube, man kann auch in einer durch Kommas getrennten Liste an.)
InformationsquelleAutor der Antwort dogbane
wie etwa top -b | grep java
InformationsquelleAutor der Antwort Faisal Feroz
Erweiterung auf @dogbane Antwortkönnen Sie die PID für einen Prozess namens mit
pgrep
Folgendes zu tun:InformationsquelleAutor der Antwort l0b0
Verwenden Sie die Uhr Befehl
InformationsquelleAutor der Antwort tszming
Ich es (zB.):
top -b | egrep -w 'java|mysqld'
InformationsquelleAutor der Antwort Alessandro Nizzo
Mit der Antwort von hier ich war in der Lage, erstellen Sie ein one-liner
Dieser funktioniert bei mir auf MacOS 10.12 (Sierra)
InformationsquelleAutor der Antwort bcjenkins
Ich mein problem gelöst mit:
in diesem Fall:
-n wird verwendet, um festzulegen, wie viele mal top wird, was proccess
und -b wird verwendet, um alle pids
es verhindert, dass Fehler wie :
top: pid-Obergrenze (20) überschritten
InformationsquelleAutor der Antwort Markomafs
Die folgenden code-updates eine Liste der Prozesse, die alle 5 Sekunden über den watch-Befehl:
watch -n 5 -t top -b -n 1 -p$(pgrep java | head -20 | tr "\\n" "," | sed 's/,$//')
InformationsquelleAutor der Antwort gnod
Nehme .. wenn wir mehr als 20-Prozess läuft auf dem server mit dem gleichen Namen ... das wird nicht helfen,
top -p
pgrep oracle | head -n 20 | tr "\\n" "," | sed 's/,$//'
Er wird versuchen, die Liste und bieten Echtzeit-Leistung von 20-Prozess, wo haben wir gute Chancen, fehlende andere prcesses das verbraucht mehr Ressourcen ....
Ich bin noch auf der Suche nach eine bessere option in diesem
InformationsquelleAutor der Antwort user3482072
Einen spezifischen Fall, wie ich eigentlich suchte:
Für Java-Prozesse Sie können auch
jps -q
wobei jps ist ein tool von $JAVA_HOME/bin und daher sollten in Ihrem $PATH.InformationsquelleAutor der Antwort Alex
Ich kam hierher auf der Suche nach der Antwort auf diese auf OSX. Ich endete das bekommen, was ich wollte mit bash und awk:
Ich Schleife oben im logging-Modus und filtern Sie es mit awk, Gebäude ein assoziatives array aus der Ausgabe von pgrep. Awk druckt die ersten 12 Linien, wobei die Linie 12 ist die Spaltenüberschriften, und dann jede Zeile mit einem pid-das ist ein Schlüssel im array. Die dump-Datei wird verwendet, für eine schöne Schleife.
InformationsquelleAutor der Antwort aktivb
nur
top -bn 1 | grep java
wird der trick für SieInformationsquelleAutor der Antwort Guru
Ausführen der unten geben wird, die kontinuierliche Aktualisierung in der Konsole:
InformationsquelleAutor der Antwort Ayyappa Boligala
Mittels des Ansatzes erwähnt in der Antwort von Rick Byers:
aber ich hatte mehr als 20 Prozesse ausgeführt werden, so kann folgender Befehl hilfreich sein für jemanden, der in einer ähnlichen situation begegnen.
pgrep
wird die Liste der Prozesse mit bestimmten Namen - java in diesem Fall.head
wird verwendet, um die ersten 20 pids da oben nicht in den Griff mehr als 20 pids bei Verwendung von-p-argument. Schließlichpaste
tritt in die PID-Liste mit ','.Können Sie Steuern den Prozess-Namen, die Sie suchen, im oben genannten Befehl und der Anzahl der Prozesse mit diesem Namen, die Sie interessiert sind zu beobachten. Können Sie ignorieren die
head -n 20
Teil, wenn die Anzahl der Prozesse mit dem angegebenen Namen ist weniger als 20.InformationsquelleAutor der Antwort shaffooo