Lm-Sensors: Executa comandos específicos quando a temperatura fica acima / abaixo dos limites

2

Eu tenho um computador muito mal ventilado, cuja temperatura chega a 100º C em algumas ocasiões. O coitado não pode ser ventilado melhor (" colocar um ventilador maior " não é uma solução adequada). Quando a CPU atinge 100º C, a máquina pára "violentamente" (apenas desliga). Essa máquina está executando o Ubuntu 10.10 com lm-sensors-3 (o pacote instalado é lm-sensors 1: 3.1.2-6)

Eu sei qual programa está causando o problema (um media player muito exigente) Eu realmente poderia pará-lo por um tempo sem causar grandes interrupções quando a temperatura atinge 98º C e reiniciá-lo quando chegar ... digamos 90º C .

É possível fazer algo assim diretamente através de sensores de lm ou eu tenho que criar meu próprio processo que verifica periodicamente sensores de lm e "faz suas coisas" dependendo da temperatura?

Obrigado antecipadamente.

    
por BorrajaX 12.06.2012 / 19:54

1 resposta

1

Depende de qual é a saída de sensors . Se o seu é algo como o meu:

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

então você pode usar o seguinte script, adaptando-o de acordo. Além de TEMP_STOP e TEMP_START , você deve alterar a expressão regular que filtra a linha de sensors que você deseja usar. É o parâmetro para grep , na função temp .

#!/bin/bash

TEMP_STOP=98
TEMP_START=90

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

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
    
por 13.06.2012 / 00:11