Wenn ich den folgenden Befehl ausführe, um die CPU-Nutzung zu erhalten, erhalte ich eine nette + Benutzer-CPU-Nutzung.
top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'
Ausgabe:
14.5
Hier bekomme ich das Problem, dass die Ausgabe vom Befehl top abhängt und sich daher nicht sofort als Befehl top ändert. Ich bekomme also nicht sofort die richtige CPU. Es gibt die gleiche Ausgabe und ändert sich nicht.
Ich möchte die CPU-Nutzung in Echtzeit in der Ausgabe erhalten. Bitte helfen Sie mir, mein Kommando zu verbessern.
command-line
top
Ketan Patel
quelle
quelle
Antworten:
Wenn Sie sich eine Verzögerung von einer Sekunde leisten können, wird die CPU-Auslastung als einfacher Prozentsatz gedruckt:
(Ohne die Verzögerung von einer Sekunde
vmstat
können nur Durchschnittswerte seit dem Start gedruckt werden.)quelle
vmstat 1 2
:echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
Andernfalls werden Sie seit dem Bootenvmstat
Werte angeben, nach denen Sie wahrscheinlich nicht suchen.Dies ist ein bekanntes Problem mit
top
. Wie hier erläutert , gibt die erste Iteration vontop -b
die Prozentsätze seit dem Start zurück. Daher benötigen wir mindestens zwei Iterationen (-n 2
), um den aktuellen Prozentsatz zu erhalten. Um died
Arbeit zu beschleunigen, können Sie die Verzögerung zwischen den Iterationen auf einstellen0.01
.top
teilt die CPU-Auslastung zwischen Benutzer, Systemprozessen undnice
Prozessen auf, wir wollen die Summe der drei. Schließlich geben Siegrep
die Zeile mit den CPU-Prozentsätzen ein und verwenden dann,gawk
um Benutzer-, System- und nette Prozesse zu summieren:quelle
top
die prozentuale Auslastung als Prozentsatz einer einzelnen CPU angegeben wird. Dies bedeutet, dass Sie häufig viel höhere Prozentsätze erhalten. Siehe Punkt 9 hier .top
im interaktiven Modus verwenden (einfach ausführentop
) und dort drückenI
(Umschalt + i), um eine Aufteilung nach Kernen anzuzeigen.Ich habe verschiedene Möglichkeiten ausprobiert, aber dies scheint mir die genaueste zu sein:
Habe es von hier bekommen
quelle
%.1f
meiner Meinung nach besser lesbar und nützlich, wenn Sie diese Ausgabe in anderen Skripten verwenden.Verwenden Sie
-n2
. Dies gibt zwei Zeilen aus. Beim erstentop
Ausdruck der Zeile ist die Zeile zu diesem Zeitpunkt nicht für den Status qualifiziert. Passen Sie dann Ihr Skript an, um die erste Zeile zu ignorieren.quelle