Wie andere gesagt haben, ist der beste Weg wahrscheinlich top. Es muss ein wenig optimiert und analysiert werden, aber Sie können es erhalten, um die aktuelle CPU-Auslastung als Prozentsatz anzugeben.
topteilt die CPU-Auslastung zwischen Benutzer, Systemprozessen und niceProzessen auf, wir wollen die Summe der drei. So können wir topim batch-Modus laufen, der es uns ermöglicht, seine Ausgabe zu analysieren. Wie hier erläutert , gibt die erste Iteration von top -bdie Prozentsätze seit dem Start zurück. Daher benötigen wir mindestens zwei Iterationen ( -n 2), um den aktuellen Prozentsatz zu erhalten. Um die dArbeit zu beschleunigen, können Sie die Verzögerung zwischen den Iterationen auf einstellen 0.01. Schließlich geben Sie grepdie Zeile mit den CPU-Prozentsätzen ein und verwenden dann, gawkum Benutzer-, System- und nette Prozesse zu summieren:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Ich dachte, Sie könnten diese Informationen auch erhalten, ps -o pcpu axindem Sie die prozentuale Nutzung jedes laufenden Prozesses hinzufügen. Leider wird, wie hier erläutert , ps"der Prozentsatz der Zeit zurückgegeben, die während der gesamten Lebensdauer eines Prozesses ausgeführt wurde", was nicht erforderlich ist.
BEARBEITEN
Basierend auf Ihrem Kommentar unterscheidet sich Ihre Version von topmeiner und Sie sollten diese stattdessen verwenden:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Um Probleme mit der Lokalisierung zu vermeiden, setzen Sie das Gebietsschema auf C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'