Linux

Lm-Sensors:當溫度高於/低於限值時執行特定命令

  • June 12, 2012

我有一台通風不良的電腦,有時溫度會達到 100º C。可憐的東西不能更好地通風(“放一個更大的風扇”不是一個合適的解決方案)。當 CPU 達到 100º C 時,機器“猛烈地”停止(只是關閉)。那台機器正在執行帶有 lm-sensors-3 的 Ubuntu 10.10(安裝的軟體包是 lm-sensors 1:3.1.2-6)

我知道是什麼程序導致了這個問題(一個非常苛刻的媒體播放器),當溫度達到 98º C 時,我實際上可以將其停止一段時間而不會造成重大中斷,並在達到 90º C 時再次啟動它。

是否可以直接通過 lm-sensors 做類似的事情,還是我必須創建自己的程序來定期檢查 lm-sensors 並根據溫度“做事”?

先感謝您。

這取決於輸出是什麼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

引用自:https://unix.stackexchange.com/questions/40617