Wie andere gesagt haben, ist der beste Weg wahrscheinlich top
. Es muss ein wenig optimiert und analysiert werden, aber Sie können es dazu bringen, Ihnen die aktuelle CPU-Auslastung als Prozentsatz anzuzeigen.
top
teilt die CPU-Auslastung zwischen Benutzer, Systemprozessen und nice
auf Prozesse, wir wollen die Summe der drei. Wir können also top
ausführen in b
atch-Modus, mit dem wir seine Ausgabe analysieren können. Allerdings, wie hier erklärt, die 1. Iteration von top -b
gibt die Prozentsätze seit dem Booten zurück, wir brauchen also mindestens zwei Iterationen (-n 2
), um den aktuellen Prozentsatz zu erhalten. Zur Beschleunigung können Sie den d
setzen Verzögerung zwischen Iterationen bis 0.01
. Schließlich grep
die Zeile mit den CPU-Prozentwerten und verwenden Sie dann gawk
um Benutzer, System und nette Prozesse zusammenzufassen:
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 über ps -o pcpu ax
erhalten durch Hinzufügen der %Verwendung jedes laufenden Prozesses. Leider, wie hier erklärt, ps
"gibt den Prozentsatz der Zeit zurück, die während der gesamten Lebensdauer eines Prozesses aufgewendet wurde", was nicht das ist, was Sie brauchen.
BEARBEITEN
Basierend auf Ihrem Kommentar, Ihrer Version von top
unterscheidet sich von meiner und Sie sollten stattdessen dies verwenden:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Und 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}'
sar
ist der definitive Weg, es zu tun. Also zum Beispiel sar -u
wird so etwas ausgeben:
08:30:01 AM CPU %user %nice %system %iowait %idle
08:40:01 AM all 6.94 0.00 1.77 4.92 86.36
08:50:01 AM all 5.73 0.00 2.31 12.72 79.24
09:00:01 AM all 5.95 0.00 2.58 18.36 73.11
09:10:01 AM all 6.88 0.00 2.22 17.44 73.45
09:20:01 AM all 8.61 0.00 2.68 27.93 60.78
Sie sagen nicht, welches Linux Sie verwenden, aber für CentOS/RedHat müssen Sie den sysstat
installieren Paket, und ich denke, es ist dasselbe auf Debian/Ubuntu.
Sie können sar auch verwenden, um Statistiken ad hoc zu sammeln :
sar -o /tmp/sar.out 60 600
Sammelt 600 Mal alle 60 Sekunden Statistiken, also 600 Minuten lang.