Wenden Sie die Top-Filter im Batchmodus an

Wenden Sie die Top-Filter im Batchmodus an

Ich kann die gewünschten Filter im interaktiven Modus anwenden (durch Drücken von „o“). Gibt es eine Möglichkeit, diese im Batch-Modus zu erhalten?

Ich verwende procps-ng Version 3.3.10. Danke.

Antwort1

Entsprechenddie Manpage, die -pBefehlszeilenoption kann verwendet werden, um einzuschränken, welche Prozesse toplesen. Sie scheint keine exakt gleiche Filterung wie im interaktiven Modus zu ermöglichen, aber Sie können im Wesentlichen das gleiche Ergebnis erzielen, indem Sie die Ausgabe von untersuchen ps.

Beispiel, das nur Prozesse mit mehr als drei Threads berücksichtigt:

$ ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print $2; } }' | sort -u

Auf meinem Computer wird dadurch eine Liste aller relevanten Prozesse ausgedruckt, einer in jeder Zeile. psgeneriert die Liste mit den Prozessdetails, der awkBefehl filtert sie und sortentfernt nur Duplikate.

Überprüfen Sie, welche Spalten psSie für Ihren Gebrauch benötigen. Auf meinem Computer ist die Anzahl der Threads („NLWP“) die sechste Spalte ( $6) und die Prozess-ID („PID“) die zweite Spalte ( $2). Passen Sie diese im awkBefehl nach Bedarf an, um den gewünschten Filter zu erhalten. Beachten Sie, dass dies $6zweimal erscheint: zuerst, um sicherzustellen, dass es sich um eine Zahl und nicht um die Kopfzeile handelt, und das zweite Mal, um sicherzustellen, dass es mehr als 3 sind.

Nach dem Ausführen dieses Befehls müssen die Prozess-IDs an übergeben werden top. Bash und wahrscheinlich auch andere Shells erlauben die Übergabe der Ausgabe eines Programms als Argumente an ein anderes Programm, sodass der endgültige Befehl lauten könnte:

$ top $(ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print "-p"$2; } }' | sort -u) ... And other options

"-p"wurde hinzugefügt, damit die Ausgabe funktioniert top. Passen Sie diesen Befehl bei Bedarf an Ihren Filter und Ihre Shell an, fügen Sie ihn in Ihren Batch ein, und er sollte funktionieren.

Hinweis: Um weitere Filter hinzuzufügen, müssen Sie wahrscheinlich Awk lernen. Es ist nicht allzu schwer.

verwandte Informationen