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

관련 정보