GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welche Methoden stehen zur Verfügung, um die CPU-Auslastung in der Linux-Befehlszeile abzurufen?

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.


Linux
  1. Generieren Sie Passwörter auf der Linux-Befehlszeile

  2. Lassen Sie sich mit sort in der Befehlszeile sortieren

  3. Verwenden der Kraft in der Linux-Befehlszeile

  4. Haben Sie eine Kuh an der Linux-Befehlszeile

  5. Boxen Sie sich auf der Linux-Befehlszeile ein

Patchen Sie in The Matrix über die Linux-Befehlszeile

3 Passwort-Manager für die Linux-Kommandozeile

Was ist der Linux-Überwachungsbefehl + Beispiele

Meistern Sie die Linux-Befehlszeile

Was ist der Kill-Befehl in Linux?

Was ist ein einfaches und gängiges Befehlszeilentool zum Anzeigen der Netzwerknutzung auf einem Linux-Computer?