Linux下获取cpu温度的探索

关注底部公众号,获取更多学习资料

一、hwmon介绍

Linux 中,硬件监视器的信息通常可以通过 /sys/class/hwmon/ 目录下的子目录来访问。例如,/sys/class/hwmon/hwmon0/ 目录包含了第一个硬件监视器的信息,包括传感器的数据。

在 Linux 中,hwmon0 表示硬件监视器(Hardware Monitor)的第一个实例。硬件监视器是一种用于监测系统硬件传感器和提供相关信息的子系统。这些传感器通常包括温度传感器、风扇转速传感器、电压传感器等,用于监测计算机的工作状态和硬件健康状况。

要确定每个 hwmon 实例具体代表什么,你可以检查 /sys/class/hwmon/ 目录下的子目录,查看每个子目录中包含的文件和内容,特别是文件名类似于 nametemp*_input 的文件。这些文件中的信息通常能够指示硬件监视器所监测的内容,以及每个传感器的标识。

例如,你可以运行以下命令查看 hwmon0 的一些信息:

cat /sys/class/hwmon/hwmon0/name

cat /sys/class/hwmon/hwmon0/temp*_input

通过查看这些文件,你可以了解到 hwmon0 监测的是什么硬件以及它提供的具体传感器信息。这样的信息可能因硬件和系统而异。

目录下的 temp1_inputtemp2_input 文件通常代表不同的温度传感器,提供了不同的温度读数。这些传感器可能对应于不同的硬件组件,例如不同的核心、区域或连接到主板上的其他传感器。

另外,进入目录后可以看到下面内容

# cat /sys/class/hwmon/hwmon0/temp1_input 
33000
# cat /sys/class/hwmon/hwmon0/temp2_input 
31000
# sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +33.0°C  (high = +87.0°C, crit = +97.0°C)
Core 0:         +31.0°C  (high = +87.0°C, crit = +97.0°C)
Core 1:         +27.0°C  (high = +87.0°C, crit = +97.0°C)
Core 2:         +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 3:         +30.0°C  (high = +87.0°C, crit = +97.0°C)
Core 4:         +27.0°C  (high = +87.0°C, crit = +97.0°C)
Core 8:         +30.0°C  (high = +87.0°C, crit = +97.0°C)
Core 9:         +29.0°C  (high = +87.0°C, crit = +97.0°C)
Core 10:        +30.0°C  (high = +87.0°C, crit = +97.0°C)
Core 11:        +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 12:        +31.0°C  (high = +87.0°C, crit = +97.0°C)
Core 16:        +26.0°C  (high = +87.0°C, crit = +97.0°C)
Core 17:        +29.0°C  (high = +87.0°C, crit = +97.0°C)
Core 18:        +26.0°C  (high = +87.0°C, crit = +97.0°C)
Core 19:        +29.0°C  (high = +87.0°C, crit = +97.0°C)
Core 20:        +31.0°C  (high = +87.0°C, crit = +97.0°C)
Core 24:        +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 25:        +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 26:        +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 27:        +28.0°C  (high = +87.0°C, crit = +97.0°C)
Core 28:        +29.0°C  (high = +87.0°C, crit = +97.0°C)

temp1_input对应的是整个cpu的温度,temp2_input对应的是core0,依次类推。

如果你想更详细地了解这些温度传感器是如何分配的,可以检查 /sys/class/hwmon/hwmon0/ 目录中的其他文件

二、示例

1. 读CPU的温度命令如下:

cat /sys/class/hwmon/hwmon0/temp1_input

cat /sys/class/hwmon/hwmon0/temp2_input

读出来的数值除以1000,就是实际温度。

例如:

root@:~# cat /sys/class/hwmon/hwmon0/temp1_input

47708

实际温度为:

47708÷1000=47.708℃

三、Linux hwmon 子系统

内核API:The Linux Hardware Monitoring kernel API — The Linux Kernel documentation

https://jerry-cheng.blog.csdn.net/article/details/106449418

 

你可能感兴趣的:(linux,运维,服务器)