如何从bash获得平均CPU温度?

Posted

技术标签:

【中文标题】如何从bash获得平均CPU温度?【英文标题】:How to get average CPU temperature from bash? 【发布时间】:2018-06-04 17:56:35 【问题描述】:

如何在 Linux 上通过 bash 获取平均 CPU 温度?最好以华氏度为单位。该脚本应该能够处理不同数量的 CPU。

【问题讨论】:

【参考方案1】:

你这样做:

安装

sudo apt install lm-sensors
sudo sensors-detect --auto

get_cpu_temp.sh

#!/bin/bash

# 1. get temperature

## a. split response
## Core 0:       +143.6°F  (high = +186.8°F, crit = +212.0°F)
IFS=')' read -ra core_temp_arr <<< $(sensors -f | grep '^Core\s[[:digit:]]\+:') #echo "$core_temp_arr[0]"

## b. find cpu usage
total_cpu_temp=0
index=0
for i in "$core_temp_arr[@]"; do :
    temp=$(echo $i | sed -n 's/°F.*//; s/.*[+-]//; p; q')
    let index++
    total_cpu_temp=$(echo "$total_cpu_temp + $temp" | bc)
done
avg_cpu_temp=$(echo "scale=2; $total_cpu_temp / $index" | bc)

## c. build entry
temp_status="CPU: $avg_cpu_temp F"
echo $temp_status

exit 0

输出

CPU:135.50 F

【讨论】:

sensors 输出不稳定,可以根据配置改变。在脚本中,我想我会建议使用sensors -u 输出。【参考方案2】:

您也可以直接从sysfs 读取 CPU 温度(尽管路径可能因机器/操作系统而异):

重击:

temp_file=$(mktemp -t "temp-"$(date +'%Y%m%d@%H:%M:%S')"-XXXXXX")
ls $temp_file
while true; do
    cat /sys/class/thermal/thermal_zone*/temp | tr '\n' ' ' >> "$temp_file"
    printf "\n" >> $temp_file
    sleep 2
done

如果您是 fish 用户,您可以在配置目录中添加一个函数,例如:~/.config/fish/functions/temp.fish

function temp
    set temp_file (mktemp -t "temp-"(date +'%Y%m%d@%H:%M:%S')"-XXXXXX")
    ls $temp_file
    while true
        cat /sys/class/thermal/thermal_zone*/temp | tr '\n' ' ' >> "$temp_file"
        printf "\n" >> $temp_file
        sleep 2
    end
end

示例

【讨论】:

谢谢。我不知道这些文件。这些数字是什么单位?不是摄氏度。 for e in $(cat /sys/class/thermal/thermal_zone*/temp); do printf "%s " $e 只是cat /sys/class/thermal/thermal_zone*/temp | tr '\n' ' ' &gt;&gt; "$temp_file"。从手册页: tempfile 已弃用;您应该改用 mktemp(1)。 @xinthose 没问题。这些是摄氏度乘以 1000。

以上是关于如何从bash获得平均CPU温度?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测笔记本电脑的主板,cpu,硬盘的温度

cpu温度检测方法 cpu的温度多少正常

如何查看电脑CPU温度,笔记本温度显示怎么开启

Windows 驱动程序 - 读取 CPU 温度 - 双核

openwrt怎么查看CPU温度

python如何获取服务器硬件状态信息,包括CPU温度、硬盘温度、主板电池电压、主机电源电压、CPU风扇转速?