Lm-Sensors:当温度高于/低于限值时运行特定命令

我有一个非常通风的计算机系统,它的温度在某些情况下会达到 100º C。 可怜的地方不能更好地充气(“ 放一个更大的风扇 ” 不是理想的补救措施)。当 CPU 达到 100º C 时,制造商“猛烈地”退出(只是关闭)。该制造商正在运行 Ubuntu 10.10,带有 lm - sensors - 3 (设置计划是 lm - sensors 1 :3 .1.2 - 6)

我知道是什么程序引发了问题(一个非常苛刻的媒体播放器),实际上我可以在温度达到 98º C 时停止它一段时间而不会触发重大中断,并在达到 98ºC 时再次启动它让我们声称 90º C。

是否可以直接使用 lm - 传感器做类似的事情,还是我必须创建自己的过程来偶尔检查 lm - 传感器并根据温度“做它的事情”?

事先谢谢你。

2
2022-06-07 14:41:58
资源 分享
答案: 1

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

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

然后您可以使用符合原稿的内容,并根据需要对其进行调整。 除了 TEMP_STOPTEMP_START,您应该更改过滤系统的正则表达式,从您打算使用的 sensors 开始。 它是 temp 函数中 grep 的参数。

#!/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
1
2022-06-07 15:11:54
资源