Патч Glibc для уязвимости getaddrinfo ()

Проблема в том, что (по какой-то причине) вывод команды nvidia-settings -query GPUCoreTemp под XFCE не содержит строки gpu. Он показывает только первый набор строк по сравнению с выводом той же команды, запущенной под GNOME. Это означает, что current_temp будет пустым, и последующие арифметические разложения будут неудачными.

Запуск скрипта под sh не исправит ситуацию.

Следующий сценарий bash вместо этого выберет число в конце первой строки вывода и будет использовать его в качестве текущей температуры (Edit: изменено для использования другой команды после комментариев).

#!/bin/bash

function set_fan_speed {
    local speed="$1"

    nvidia-settings -a "[gpu:0]/GPUFanControlState=1" \
        -a "[fan:0]/GPUTargetFanSpeed=$speed"
}

interval=5

while true; do
    current_temp="$( nvidia-smi -a |
      grep -F 'GPU Current Temp' | awk '{ print $(NF-1) }' )"

    if [[ -z "$current_temp" ]]; then
        echo "Something isn't right, current_temp is empty" >&2
        exit 1
    fi

    if   (( current_temp < 45 )); then set_fan_speed 40
    elif (( current_temp < 60 )); then set_fan_speed 50
    elif (( current_temp < 65 )); then set_fan_speed 60
    elif (( current_temp < 70 )); then set_fan_speed 70
    elif (( current_temp < 75 )); then set_fan_speed 80
    else                               set_fan_speed 100
    fi

    sleep "$interval"
done

Я поместил длинную команду в функцию для удобочитаемости и удалил ненужные арифметические тесты. Я также вставил проверку на вменяемость для current_temp.

В будущем этот скрипт может быть усовершенствован таким образом, чтобы вообще не трогать скорость вращения вентилятора, если она не нуждается в изменении. Отслеживать текущую скорость вентилятора и не обновлять ее в set_fan_speed, если в этом нет необходимости, было бы очевидным способом.

Примечание: я не знаю, работает ли вызов nvidia-settings в функции set_fan_speed работает. Вполне возможно, что [gpu:0]/ нужно удалить или сделать какую-то другую модификацию, чтобы сценарий работал и в GNOME, и в XFCE. Мое решение, по крайней мере, решает основную проблему разбора температуры.

3
27.01.2019, 01:55
0 ответов

Теги

Похожие вопросы