如何使用最少的脚本监控 CPU 温度以显示警告?

如何使用最少的脚本监控 CPU 温度以显示警告?

我的桌面有一个坏习惯。当我运行多个高强度应用程序并且我的CPU在一段时间内处于最大使用率时,核心温度会上升并且我的计算机会自动关闭。

有没有办法可以在后台监视(编写脚本)我的CPU温度,并在温度高于特定温度时发出某种警告?

我正在运行 Opensuse,并使用 dwm 作为窗口管理器。我通常用来sensors查看我的CPU温度。

答案1

您可以编写一个脚本来在 dwm 的状态栏中显示您的温度,例如:

temp (){
    awk '{print $4"°C"}' <(acpi -t)
    echo $temp
}
xsetroot -name "$(temp)"

您的sensors输出可能会更复杂,具体取决于您的设置:这适用于我的一台机器:

 awk '/temp1/ {print +$2"°C"}' <(sensors)

如果你打补丁状态颜色,您还可以让输出在$temp达到更高值时改变颜色......

Arch Wiki 介绍了如何设置基本状态栏脚本dwm 站点包括.xinitrc 示例

您可以查看我的dwm-status脚本以了解更多详细信息:http://beta.intuxication.org/jasonwryan/archer/file/tip/Scr​​ipts/dwm-status

答案2

对于处理这个问题,我建议采取三件事:

检查你的物理冷却

CPU自动关闭系统用于在极端情况下,当其内部温度限制策略(见下文)不起作用时,以保护CPU。

我建议检查您的冷却系统:清除计算机上的灰尘,检查风扇是否运行,检查散热器是否足够“大”并使用适当的导热膏(或垫),以确保适当的散热。

配置 CPU 内部温度限制

CPU 通常内置有内部温度限制系统,以避免危险的过热。这种保护通常利用降低性能(限制)的策略,例如:

  • 降低CPU频率,
  • 降低CPU电压,
  • 短暂停止 CPU 时钟信号。

在我的笔记本电脑的英特尔酷睿 CPU 上,自动保护启动的最高允许温度为100°C(这是一个非常常见的硬限制)。英特尔还提供了一个可配置的偏移量,以进一步降低该值。得到的offset=8结果是92°C有限度的。

从Linux 5.4开始sysfs,您可以通过以下方式读取和更新 Intel CPU 限制:

# cd /sys/bus/pci/drivers/proc_thermal/0000:00:04.0
# cat tcc_offset_degree_celsius
3
# echo 8 >| tcc_offset_degree_celsius
# cat tcc_offset_degree_celsius
8

这将为您的 CPU 本身提供额外的过热保护,让您高枕无忧。

使用系统守护进程 ( thermald) 来管理 CPU 温度

另一种选择是使用该thermald程序,其主要目的是从操作系统端监控 CPU 温度并采取措施限制发热,达到硬件限制。

它还使用以下技术:要求 CPU 限制其电力消耗(TDP 限制)、要求 CPU 降低其 p_state(频率)、更改内核cpufreq参数(即要求它使用节能方法),通过特定插入“CPU空闲时间”内核驱动程序,提高风扇速度...

这一页提供了很好的介绍thermald

答案3

我有完全相同的问题,我使用的是“cpufreqtools”(或只是“cpufreq” - 不记得了!)包。

它为您提供两个命令:cpufreq-info 和 cpufreq-set

cpufreq-info 列出当前 CPU 速度以及最小和最大速度。以及可用的步骤。

cpufreq-set 对您更有用,因为您可以限制 CPU 所能达到的最大速度。

我的容易过热的CPU有800MHz、1.60GHz和1.80GHz的可用速度。所以,我所做的就是将其限制为 1.60GHz,如下所示:

cpufreq-set --最大 1.60Ghz

奇迹般有效!

如果您的 Linux 技能更先进,您甚至可以将其放入启动脚本中,这样它总是在您的 Linux 启动时立即执行。

祝你好运。

答案4

我创建了一个脚本来直接解决此类过热问题。根据所需温度限制 CPU。它在后台自动运行,如下所示:

sudo ./temp_throttle.sh 80

该命令将使您的 CPU 核心在达到 80 摄氏度时减慢速度。当温度下降时,CPU 核心将再次运行得更快。你可以找到temp_throttle 在这里

相关内容