在特定 GPU 温度下重新启动 PC 的脚本

在特定 GPU 温度下重新启动 PC 的脚本

最近我开始挖掘莱特币。我的矿机由 3 个 Radeon R9 290x GPU 组成。有时其中一个(不是特定的一个,是随机发生的)会停止挖掘。通常重新启动 cgminer(挖掘程序)没有帮助,唯一有帮助的就是重新启动。下周我要离开 8 天,没有人可以帮我做这件事,所以我想到了一个可以自动完成这件事的脚本。

该脚本必须定期验证所有 GPU 是否正常工作,如果不工作,则重新启动。我认为读取温度是确定所有卡是否正常工作的最简单的方法。我知道如何读取温度、重新启动、将内容添加到 cron。我不知道的是如何将它们组合在一起。

获取温度命令:

 aticonfig --odgt --adapter=all | grep Sensor:

输出如下所示:

 Sensor: Temperature - 77.00 C
 Sensor: Temperature - 77.00 C
 Sensor: Temperature - 77.00 C

我希望脚本读取数值,并在其低于 XX 时重新启动。

你能帮助我吗?

答案1

将其保存为脚本并使其可执行( ),然后使用需要root 权限的chmod +x scriptname.shbash 运行它。sudoreboot

#! /bin/bash
while :
do
    temp=$(aticonfig --odgt --adapter=all | grep Sensor: | sed 's/[a-zA-Z:-]//g'|  tr -d ' ')

    action=$(echo $temp|awk '{ print ($1 < 76) ? "reboot" : "" }')

    $action
    sleep 1
done

我没有用 ATI 命令测试过它,因为我无法访问该命令,但它可以用 替换aticonfig --odgt --adapter=all | grep Sensor:echo 'Sensor: Temperature - 77.00 C'这是我测试它的方法。

76 是重启温度。您可以编辑它。

答案2

这应该有效:

#!/usr/bin/env bash    
while true; do
  aticonfig --odgt --adapter=all | 
   awk -vt="$1" '(/Sensor:/ && $(NF-1) < t ){exit(1)}' || reboot 
   sleep 10 
done

将上面的脚本保存为gpu_temp.sh,使其可执行,并使用您想要的温度限制作为参数运行它:

/path/to/gpu_temp.sh 77

我没有 ATI 卡,所以我无法测试这个,但如果 GPU 核心温度低于 77°C,这会导致你的机器重新启动。


解释

  • 开始while true无限循环,脚本将一直运行直到被终止。
  • 该行检查包含的行的awk倒数第二个字段()是否小于您选择的值,如果是,则以退出状态退出。($NF-1)Sensor:1
  • ||如果左侧命令失败,并且退出时状态为非零,则将执行右侧命令。因此,如果其中一个核心的温度低于某个值,awk则脚本将失败,系统将重新启动。
  • sleep 10只需暂停脚本 10 秒钟,这样您的系统就不会被大量请求淹没。

相关内容