Linux获取CPU/GPU的温度

        在 Linux 系统中,/sys/class/thermal/thermal_zone0/temp 文件中的温度值通常以 毫摄氏度(millidegree Celsius) 为单位存储。这意味着你需要将读取的值除以 1000 来转换为常见的摄氏度(°C)。

换算方法:

  1. 读取文件内容

    cat /sys/class/thermal/thermal_zone0/temp

    例如,输出可能是 53000

  2. 转换为摄氏度

    温度(°C)= 读取的值 / 1000

    例如:

    53000 / 1000 = 53.0°C

注意事项:

  1. 单位确认:绝大多数 Linux 系统使用毫摄氏度(如 thermal_zone),但极少数情况下可能是其他单位(如某些嵌入式设备)。如果不确定,可以查阅相关硬件文档。

  2. 多 thermal_zone:如果有多个传感器(如 CPU、GPU 等),可能会存在 thermal_zone1thermal_zone2 等,需分别读取。

  3. 动态更新:该文件的值会实时更新,可以通过 watch 命令动态监控:

    watch -n 1 'cat /sys/class/thermal/thermal_zone*/temp'

代码范例: 

void* monitor_thermalSensor_thread(void *data)
{

	FILE *fp = NULL;
	char buffer[10];
	int temp = 0;
	ALOGI("[%s]\n",__func__);

	while(1)
	{
		fp = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
		if(fp == NULL) 
        {
			sleep(1);
			continue;
		}

		memset(buffer, 0, sizeof(buffer));
		fgets(buffer, sizeof(buffer), fp);
		temp = atoi(buffer);
		printf("temperature: %d \n", temp);
		fclose(fp);

		if(temp > 120000) //120度
        {

			ALOGI("CPU temperature is too high. Reboot!!");
			sleep(6);
			am_property_set("ctl.start","reboot");
		}
		sleep(30);
	}
	ALOGI("======	monitor_thermalSensor_thread exit!!!	======\n");
	pthread_detach(pthread_self());
	pthread_exit(NULL);
}

void monitor_thermalSensor_temperature(void)
{
	pthread_t monitor_thermalSensorTemperature_thread;
	pthread_create(&monitor_thermalSensorTemperature_thread, NULL, monitor_thermalSensor_thread, NULL);
	return;
}

 

 

### 查看 Linux 系统中的 CPUGPU 详细信息 #### 查看 CPU 的详细信息 可以通过读取 `/proc/cpuinfo` 文件来获取详细的 CPU 信息。以下是具体方法: - **查看物理 CPU 数量** 使用 `cat /proc/cpuinfo | grep "physical id" | uniq | wc -l` 可以统计系统的物理 CPU 数量[^2]。 - **查看逻辑核心数量** 执行 `grep -c ^processor /proc/cpuinfo` 能够返回总的逻辑处理器数目,这包括超线程的核心数[^3]。 - **查看每个物理 CPU 的核心数** 命令 `cat /proc/cpuinfo | grep "cpu cores"` 提供了单个物理 CPU 上的实际核心数[^2]。 - **查看 CPU 型号** 利用 `cat /proc/cpuinfo | grep 'model name' | uniq` 获取当前系统中安装的 CPU 类型及其频率[^2]。 #### 查看 GPU 的详细信息 对于 NVIDIA 显卡,可以采用以下几种方式获得更详尽的数据: - **使用 nvidia-smi 工具** 输入 `nvidia-smi` 不仅能够展示所有已安装的 GPU 设备列表,还提供了关于驱动程序版本、CUDA 版本以及每张显卡的工作负载(如功耗百分比、温度等)的状态报告[^4]。 - **通过 lspci 查询硬件设备详情** 运行 `lspci | grep -i nvidia` 来识别系统中存在的 NVIDIA 图形适配器,并进一步确认其具体的 PCI ID 编码以便后续查询更多规格参数。 - **访问特定路径下的文件内容** 如果需要深入了解某一块指定编号的 GPU,则可直接查阅位于 `/proc/driver/nvidia/gpus/<bus-id>/information` 中的内容。例如,执行如下两条指令分别针对两块不同位置上的 GPU 收集资料: ```bash cat /proc/driver/nvidia/gpus/0000:17:00.0/information cat /proc/driver/nvidia/gpus/0000:b3:00.0/information ``` #### 示例脚本 下面提供了一个简单的 Bash 脚本来一次性收集并打印出主要的 CPUGPU 配置概况: ```bash #!/bin/bash echo "== CPU Information ==" echo "Physical CPUs: $(cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l)" echo "Logical Cores: $(grep -c ^processor /proc/cpuinfo)" echo "Cores per Physical CPU: $(cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $NF}')" echo "Model Name: $(cat /proc/cpuinfo | grep 'model name' | uniq | cut -d':' -f2-)" echo "" echo "== GPU Information ==" if command -v nvidia-smi &> /dev/null; then echo "$(nvidia-smi)" else echo "No NVIDIA GPUs detected or nvidia-smi not available." fi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值