You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 11下GPU功耗检测脚本问题:字符串与固定值比较报错

GPU功耗检测脚本的数值比较问题排查与解决

问题根源

原脚本中使用[ "${zet}" -gt 150 ]进行数值比较,但zet是通过bc -l计算得到的浮点数(例如162.75),而shell的-gt运算符仅支持整数比较,浮点数会被当作字符串处理,导致比较逻辑失效,甚至触发"integer expression expected"错误。

另外原脚本存在两处细节错误:

  • 警告提示逻辑颠倒:功耗大于150时应提示高功耗,而非"SYSTEM DRAW LOW"
  • 拼写错误:WARRNING应为WARNING

修复方案

方案1:用bc直接做浮点数比较

利用bc支持浮点运算和比较的特性,通过输出结果判断条件是否成立:

#!/bin/sh
clear
a=$(nvidia-smi -q -i 0 | grep "Power Draw" | cut -c45-50) 
b=$(nvidia-smi -q -i 1 | grep "Power Draw" | cut -c45-50) 
c=$(nvidia-smi -q -i 2 | grep "Power Draw" | cut -c45-50) 
d=$(nvidia-smi -q -i 3 | grep "Power Draw" | cut -c45-50) 
zet=$( echo "$a" + "$b" + "$c" + "$d"  | bc -l )
echo "SYSTEM DRAW:" "$zet"

# 使用bc进行浮点数比较
if echo "$zet > 150" | bc -l | grep -q 1; then          
    echo "WARNING - SYSTEM DRAW HIGH"                                       
else
    echo "OK"  
fi
sleep 8
exit

方案2:将浮点数转为整数后比较

通过截断或四舍五入把浮点数转成整数,再用shell的整数比较运算符:

#!/bin/sh
clear
a=$(nvidia-smi -q -i 0 | grep "Power Draw" | cut -c45-50) 
b=$(nvidia-smi -q -i 1 | grep "Power Draw" | cut -c45-50) 
c=$(nvidia-smi -q -i 2 | grep "Power Draw" | cut -c45-50) 
d=$(nvidia-smi -q -i 3 | grep "Power Draw" | cut -c45-50) 
zet=$( echo "$a" + "$b" + "$c" + "$d"  | bc -l )
echo "SYSTEM DRAW:" "$zet"

# 四舍五入转整数,或用cut -d. -f1截断取整
zet_int=$(printf "%.0f" "$zet")
if [ "$zet_int" -gt 150 ]; then          
    echo "WARNING - SYSTEM DRAW HIGH"                                       
else
    echo "OK"  
fi
sleep 8
exit

进阶优化:简化GPU功耗提取逻辑

原脚本重复执行nvidia-smi命令,可通过循环简化,同时用awk替代cut,避免因输出格式变化导致的提取错误:

#!/bin/sh
clear
total_power=0

# 遍历0-3号GPU,统一提取功耗数值
for gpu_id in 0 1 2 3; do
    # awk直接提取Power Draw后的数值(第三列),无需依赖固定列位置
    power_val=$(nvidia-smi -q -i "$gpu_id" | grep "Power Draw" | awk '{print $3}')
    total_power=$(echo "$total_power + $power_val" | bc -l)
done

echo "SYSTEM DRAW: $total_power W"

if echo "$total_power > 150" | bc -l | grep -q 1; then
    echo "WARNING - SYSTEM DRAW HIGH"
else
    echo "OK"
fi
sleep 8
exit

内容的提问来源于stack exchange,提问作者Pepi48

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:51