返回最高和最低 CPU 温度的脚本

返回最高和最低 CPU 温度的脚本

我最近尝试使用自定义配置安装 conky,我想要一个似乎不存在的功能,或者至少像谷歌告诉我的那样。我写了一个简单的 bash 脚本,它读取 CPU 温度,检查它是高于还是低于旧读数,并输出最高和最低的正确值。问题是,我有时会收到此错误:

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

if并且没有温度作为响应。在我将温度与进行比较的几乎每个情况下都会出现错误lm-sensors,但会随机重复。

这是我写的脚本:

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 
   

在这里,我调用脚本返回 cpu1 到目前为止的最低温度。不同类型的比较如下:

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-sensors才能hddtemp正常工作

答案1

我累了。我认为问题在于我如何保存这些值。似乎,conky 并行调用了这个脚本,有时变量不会被保存。所以我所做的就是将所有 if 拆分成不同的 .sh 文件,然后分别运行它们,并将变量保存到不同的文件中

相关内容