Linux
Lm-Sensors:當溫度高於/低於限值時執行特定命令
我有一台通風不良的電腦,有時溫度會達到 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