이것을 사용하여 CPU 온도를 표시합니다.
에코 CPU 온도 >> /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
라데온은 내 그래픽 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)
파일에 두 번째 온도만 표시하고 싶습니다.
그런데 temp1이 2개 있나요?
어떻게 두 번째 온도만 표시할 수 있나요?
답변1
다음 코드는 다음 temp1
을 포함하는 행 뒤에 오는 경우에만 해당 행을 인쇄합니다 k10temp-pci-00c3
.
$ sensors -f | awk '/k10temp-pci-00c3/{f=1} f && /temp1/{print; f=0}'
temp1: +82.4°F (high = +158.0°F)
제목도 원하는 경우:
$ 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)
작동 원리
BEGIN{print"CPU Temperature"}
제목을 인쇄합니다./k10temp-pci-00c3/{f=1}
다음을 포함하는 행이 발견 되면 awk 변수를f
1(true)로 설정합니다.k10temp-pci-00c3
f && /temp1/{print; f=0}
f
가 참이고 줄에 가 포함되어 있으면 줄을 인쇄합니다temp1
. 이 역시f
다시 0(거짓)으로 설정됩니다.
대안: sed 사용
$ sensors -f | sed -n '/k10temp-pci-00c3/,/temp1/{/temp1/p}'
temp1: +82.4°F (high = +158.0°F)
답변2
칩 이름을 인수로 전달할 수 있습니다 sensors k10temp-pci-00c3
.센서소프트웨어는 이 특정 센서만 읽습니다.
$ sensors k10temp-pci-00c3
Adapter: PCI adapter
temp1: +82.4°F (high = +158.0°F)
(crit = +169.5°F, hyst = +168.3°F)
이렇게 하면 사용 가능한 모든 센서를 읽은 다음 출력을 제한하는 것과 비교하여 더 빠르게 읽을 수 있습니다.
그런 다음 temp1 라인만 얻으려면 가장 간단한 방법은 grep을 사용하는 것입니다.
$ sensors k10temp-pci-00c3 | grep temp1
temp1: +82.4°F (high = +158.0°F)
온도만 얻으려면: awk를 사용하여 해당 행을 열로 처리하고 두 번째 열을 얻습니다.
$ sensors k10temp-pci-00c3 | grep temp1 | awk '{print $2}'
+82.4°F
나는 이 방법이 더 빠르게 작동하고 처리 능력을 덜 사용한다고 생각합니다.
다른 기계를 사용하는 다른 사람들의 경우 센서 출력이 다를 수 있으므로 이에 따라 grep 대상을 변경하십시오. 내 컴퓨터에서는 센서 라벨 Tdie
이temp1