2016-06-16 2 views

Antwort

1

Rohr top zu awk und die CPU-Auslastung Spalte aufaddieren:

top -b -n 1 -u username | awk 'NR>7 { sum += $9; } END { print sum; }' 

Die awk Befehl sagt: „Für Zeilen (von oben) größer ist als Reihe 7, fügt die Zahl in Feld 9 $9 und es speichern, in der Variablen sum. Nachdem Sie alle Zeilen des Pipeline-Befehls top durchgegangen sind, drucken Sie den Wert in der Variablen sum aus.


Wenn die -u Flag nicht auf Ihrem System arbeiten, können Sie nur den Benutzernamen suchen Stick mit dem NR>7 Zustand:

top -b -n 1 | awk 'NR>7 && $2=="root" { sum += $9 } END { print sum }' 

Wenn Sie den Prozentsatz verwendet drucken wollte Jeder Benutzer, der oben aufgeführt ist, könnte diese zweite Bedingung übernehmen und die Summe in ein Array umschalten:


Eine letzte Sache. Ich glaube, dass die prozentuale CPU möglicherweise durch die Anzahl der Kerne in Ihrem System geteilt werden muss. Wie ... Ich glaube, dass es möglich sein könnte, eine Zahl größer als 100 hier zu sehen.

+0

Vielen Dank! Warum sind die Zeilen (von oben) größer als Zeile 7? Fragen Sie sich einfach .. – kellyS723

+0

Führen Sie den Befehl 'top' ohne die Pipe. Sie werden sehen, dass die Liste der Prozesse in Zeile 8 beginnt. Also beginnen wir damit, die Menge an CPU zu addieren, die ab Zeile 8 bis zum Ende verwendet wird. – JNevill

+0

Ich bekomme unbekanntes Argument u, also frage ich mich, ob ich stattdessen nur zur Summe addieren kann, wenn der Benutzer gleich Nutzername ist. Wie könnte ich das tun? – kellyS723

Verwandte Themen