Ich verwende dies, um meine CPU-Temperatur anzuzeigen.

Echo CPU-Temperatur >> /home/andy/bin/HD_AND_CPU_TEMPS.txt

sensors -f | grep "temp1" >> /home/andy/bin/HD_AND_CPU_TEMPS.txt
geany /home/andy/bin/HD_AND_CPU_TEMPS.txt

Die Radeon ist meine Grafik-CPU.

radeon-pci-0008
Adapter: PCI adapter
temp1:       +115.1°F  (crit = +248.0°F, hyst = +213.6°F)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +82.4°F  (high = +158.0°F)
                       (crit = +169.5°F, hyst = +168.3°F)

Ich möchte, dass in der Datei nur die 2. Temperatur angezeigt wird.

Aber es gibt zwei Temp1s?

Wie kann nur die 2. Temperatur angezeigt werden?

Antwort1

Der folgende Code druckt die temp1Zeile nur, wenn sie auf eine Zeile folgt, die Folgendes enthält k10temp-pci-00c3:

$ sensors -f | awk '/k10temp-pci-00c3/{f=1} f && /temp1/{print; f=0}'
temp1:        +82.4°F  (high = +158.0°F)

Wenn du zusätzlich die Überschrift möchtest:

$ cat sensors-f | awk 'BEGIN{print"CPU Temperature"} /k10temp-pci-00c3/{f=1} f && /temp1/{print; f=0}'
CPU Temperature
temp1:        +82.4°F  (high = +158.0°F)

Wie es funktioniert

  • BEGIN{print"CPU Temperature"}druckt die Überschrift.

  • /k10temp-pci-00c3/{f=1}setzt die awk-Variable fauf 1 (wahr), wenn eine Zeile k10temp-pci-00c3gefunden wird, die enthält.

  • f && /temp1/{print; f=0}druckt eine Zeile, wenn fwahr ist und die Zeile enthält temp1. Dies setzt auch fauf Null (falsch) zurück.

Alternative: Verwendung von sed

$ sensors -f | sed -n '/k10temp-pci-00c3/,/temp1/{/temp1/p}'
temp1:        +82.4°F  (high = +158.0°F)

Antwort2

Sie können den Chipnamen als Argument übergeben, sensors k10temp-pci-00c3umSensorenDie Software liest nur diesen bestimmten Sensor.

$ sensors k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +82.4°F  (high = +158.0°F)
              (crit = +169.5°F, hyst = +168.3°F)

Dies führt zu einem schnelleren Lesevorgang, als wenn alle verfügbaren Sensoren gelesen und dann die Ausgabe begrenzt würden.

Und dann möchten Sie nur die Zeile temp1 abrufen. Am einfachsten geht das mit grep

$ sensors k10temp-pci-00c3 | grep temp1
temp1:        +82.4°F  (high = +158.0°F)

Um nur die Temperatur zu erhalten: Verwenden Sie awk, um diese Zeile als Spalte zu behandeln und die 2. Spalte zu erhalten

$ sensors k10temp-pci-00c3 | grep temp1 | awk '{print $2}'
+82.4°F

Ich glaube, diese Methode funktioniert schneller und verbraucht weniger Rechenleistung.

Bei anderen Benutzern mit anderen Maschinen kann die Sensorausgabe anders sein. Ändern Sie entsprechend, was zu grepen ist. Auf meiner Maschine lautet die Sensorbezeichnung Tdiestatttemp1

verwandte Informationen