Скрипт для возврата максимальной и минимальной температуры процессора

Недавно я пытался установить conky с пользовательской конфигурацией, и я хотел использовать функцию, которая, кажется, не extst или, по крайней мере, как говорит Google меня. Я написал простой сценарий bash, который читает временные характеристики процессора, проверяет, является ли он выше или ниже старого значения, и выводит правильное значение для максимального и минимального значений. Дело в том, что иногда я получаю эту ошибку:

/home/ffpp/.conky/temphist.sh: line 25: [:: integer expression expected

, а не temp в качестве ответа. Ошибка возникает почти в каждом , если , где я сравниваю температуры с lm-сенсорами , но со случайными повторениями.

Это сценарий, который я написал:

type=$1;                                                    #argument import
if [ ! -f /var/tmp/tempmon.var ]                            #check of existence of old variables
then
    hddmin=100
    hddmax=0
    cpu1min=100
    cpu1max=0
    cpu2min=100
    cpu2max=0
else
    . /var/tmp/tempmon.var
fi

case $type in                                               #start of information collection and comparison according to argument
    hddmin)
        tmp=$(hddtemp /dev/sda -n)
        if [ "$tmp" -lt "$hddmin" ]
        then
            hddmin=$tmp
        fi
        echo $hddmin
        ;;
    hddmax)
        tmp=$(hddtemp /dev/sda -n)
        if [ "$tmp" -gt "$hddmax" ]
        then
            hddmax=$tmp
        fi
        echo $hddmax
        ;;
    cpu1min)
        tmp=$(sensors | grep -oP 'Core\ 0.*?\+\K[0-9.]+' | tr -d . | cut -c-2) 
        if [ "$tmp" -lt "$cpu1min" ]
        then
            cpu1min=$tmp
        fi
        echo $cpu1min
        ;;
    cpu1max)
        tmp=$(sensors | grep -oP 'Core\ 0.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
        if [ "$tmp" -gt "$cpu1max" ]
        then
            cpu1max=$tmp
        fi
        echo $cpu1max
        ;;
    cpu2min)
        tmp=$(sensors | grep -oP 'Core\ 1.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
        if [ "$tmp" -lt "$cpu2min" ]
        then
            cpu2min=$tmp
        fi
        echo $cpu2min
        ;;
    cpu2max)
        tmp=$(sensors | grep -oP 'Core\ 1.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
        if [ "$tmp" -gt "$cpu2max" ]
        then
            cpu2max=$tmp
        fi
        echo $cpu2max
        ;;
esac
                                                            #exported variables to tempmon.var temporary file for future use
echo 'hddmin='"$hddmin"'' > /var/tmp/tempmon.var
echo 'hddmax='"$hddmax"'' >> /var/tmp/tempmon.var
echo 'cpu1min='"$cpu1min"'' >> /var/tmp/tempmon.var
echo 'cpu1max='"$cpu1max"'' >> /var/tmp/tempmon.var
echo 'cpu2min='"$cpu2min"'' >> /var/tmp/tempmon.var
echo 'cpu2max='"$cpu2max"'' >> /var/tmp/tempmon.var
chmod +x /var/tmp/tempmon.var

Я попытался использовать (("$ var1"> "$ var2")) вместо ["$ var1" -gt "$ var2"] , в if сравнений, но обнаружилась похожая ошибка. Что я могу сделать, чтобы решить эту проблему?

Способ вызова сценария следующий:

bash temphist.sh <temperature to compare>

, например:

bash temphist.sh cpu1min 
   

Здесь я вызываю сценарий, чтобы вернуть мне самую низкую температуру, до которой процессор был до сейчас. Различные типы сравнений следующие:

hddmin        #Minimum HDD temp
hddmax        #Maximum HDD temp
cpu1min       #Minimum CPU core 1 temp
cpu1max       #Maximum CPU core 1 temp
cpu2min       #Minimum CPU core 2 temp
cpu2max       #Maximum CPU core 2 temp

Для этого скрипта необходимы пакеты lm-sensor и hddtemp для правильной работы

0
задан 11 July 2020 в 22:10

1 ответ

Я устал. Я думаю, что проблема была в том, как я сохранил значения. Кажется, что conky сделал параллельные вызовы этого скрипта, а иногда переменные не будут сохранены. Так что я разбил все, если в разных файлах .sh, и запустил их отдельно, и сохранил переменные в разных файлах

0
ответ дан 30 July 2020 в 22:09

Другие вопросы по тегам:

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