Die Frage ist wohl, ob ich den Prozentsatz der CPU-Auslastung irgendwie berechnen kann, indem ich das / proc / stat einmal lese.
# head -1 /proc/stat
cpu 67891300 39035 6949171 2849641614 118251644 365498 2341854 0
Ich denke darüber nach, die Spalten mit Ausnahme des IOWait (ich habe irgendwo gelesen, dass es im Leerlauf gezählt wird) zusammenzufassen, und das würde mir 100% geben, und jede einzelne Spalte könnte durch (column / 100_percent) * 100 in Prozent umgewandelt werden.
- Benutzer: normale Prozesse, die im Benutzermodus ausgeführt werden
- nice: vernünftige Prozesse, die im Benutzermodus ausgeführt werden
- system: Prozesse, die im Kernel-Modus ausgeführt werden
- Leerlauf: Daumen drehen
- iowait: Warten auf den Abschluss der E / A
- irq: Wartungsinterrupts
- softirq: Wartung von Softirqs
- stehlen: unfreiwilliges warten
- gast: einen normalen gast führen
- guest_nice: betreibt einen niced guest
Ist das ein praktikabler Ansatz oder bin ich total von der Strecke?
Wenn Sie oneliner möchten, sieht es möglicherweise so aus:
Das Ergebnis:
97.17000000000000000000
Wie es funktioniert:
erzeugt
( 1055057784 - 1055058055 )/100
dann diesen Zeilenvorschub zu bc. Will sowas haben-7.84000000000000000000
, dann wickel es einfach auf100-$(value)
und füttere bc wiederDort:
sleep #
- 1 Sekunde Verzögerung, wenn Sie diesen Wert ändern, dann sollte das Zwischenergebnis in die Anzahl der Sekunden geteilt werden.$5
- 5. Feld gemäßman proc
und http://www.linuxhowtos.org/System/procstat.htmBitte lassen Sie mich wissen, wenn dies bei Ihnen nicht funktioniert.
quelle
Oder wenn Sie mit nur zwei Ziffern nach dem Punkt awk zufrieden sind, können Sie alles viel einfacher und besser lesbar machen:
quelle