Lm-传感器:当温度高于/低于限制时运行特定命令

Lm-传感器:当温度高于/低于限制时运行特定命令

我有一台通风非常差的计算机,有时温度会达到 100°C。这可怜的东西不能再通风了(”放一个更大的风扇“不是一个合适的解决方案)。当 CPU 达到 100°C 时,机器会“剧烈”停止(只是关闭)。该机器正在运行带有 lm-sensors-3 的 Ubuntu 10.10(安装的软件包是 lm-sensors 1:3.1 .2-6)

我知道是什么程序导致了这个问题(一个要求非常高的媒体播放器),当温度达到 98°C 时,我实际上可以将其停止一段时间,而不会造成重大中断,并在温度达到……比如说 90°C 时再次启动它。

是否可以直接通过流明传感器执行类似的操作,或者我是否必须创建自己的流程来定期检查流明传感器并根据温度“执行其操作”?

先感谢您。

答案1

这取决于 的输出是什么sensors。如果你的和我的一样:

% sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +44.0°C  (high = +70.0°C)

那么您可以使用以下脚本,并进行相应的调整。除了TEMP_STOP和 之外TEMP_START,您还应该更改过滤要使用的行的正则表达式sensors。它是函数grep中 ,的参数temp

#!/bin/bash

TEMP_STOP=98
TEMP_START=90

temp() {
    sensors | grep '^temp1:' | sed -e 's/.*: \+\([+-][0-9.]\+\)°C.*$/0\1/'
}

while true; do
    TEMP=$(temp)
    # keep waiting until temp is too hot
    while [ $(echo "$TEMP < $TEMP_STOP" | bc) = 1 ]; do
        sleep 10
        TEMP=$(temp)
    done

    echo temp $TEMP too hot, stopping.

    # now wait for it to cool down...
    while [ $(echo "$TEMP > $TEMP_START" | bc) = 1 ]; do
        sleep 10
        TEMP=$(temp)
    done

    echo ok now, restarting...
done

相关内容