获取每个核心的使用率 BASH

12 浏览
0 Comments

获取每个核心的使用率 BASH

我想要监听CPU使用率,通过循环获取每个核心的使用百分比:CPUcore1CPUcore2

while :
do
    if [ $CPUcore1 -gt 95 ] && [ $CPUcore2 -gt 95 ]
    then
        //脚本..
    fi
done

CPUcore1CPUcore2应该等于htop上显示的数值。

在这个例子中:

CPUcore1=70.0

CPUcore2=44.4

我知道需要进行一些计算才能评估这个值。

0
0 Comments

(Get each core usage BASH)这个问题的出现的原因是用户在进行整数比较时使用了非整数的变量。解决方法是使用awk进行浮点数运算来比较变量的值。

在Bash中,> 不是用于比较数值的合适操作符。当它被用作比较操作符时,它进行的是字典序的比较而不是数值比较(比如2 > 10)。通常情况下,它被用作文件重定向符号,而不是比较操作符。

对于test "$a" -gt "$b"这样的比较,$a$b必须是整数,而字符串70.0不是整数。在Shell中进行浮点数运算比较困难,所以最好使用awk来进行计算,例如:

if awk -v a="$CPUcore1" -v b="$CPUcore2" 'BEGIN{exit !(a > 95 && b > 95)}'; then
        ...
fi

用户在问题中提到了自己需要计算CPUcore1CPUcore2的使用情况,但没有给出具体的计算方法。我不明白你的评论。你试图对非整数值进行整数比较。如果这不是问题的原因,我不知道问题出在哪里。

用户还提供了一个指向相关问题的链接:stackoverflow.com/questions/9229333/…

0