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 temp1
Zeile 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-Variablef
auf 1 (wahr), wenn eine Zeilek10temp-pci-00c3
gefunden wird, die enthält.f && /temp1/{print; f=0}
druckt eine Zeile, wennf
wahr ist und die Zeile enthälttemp1
. Dies setzt auchf
auf 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-00c3
umSensorenDie 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 Tdie
statttemp1