Недавно я начал добывать лайткойны. Мой майнер состоит из 3 графических процессоров Radeon R9 290x. Время от времени один из них (не конкретный, это происходит случайно) прекращает майнинг. Обычно перезапуск cgminer (программы майнинга) не помогает, единственное, что помогает, это перезагрузка. На следующей неделе я уезжаю на 8 дней, и мне некому это сделать, поэтому я подумал о сценарии, который сделает это автоматически.
Сценарий должен периодически проверять, все ли графические процессоры работают, а если нет - перезагружаться. Я думаю, что считывание температуры - самая простая вещь, чтобы определить, работают ли все карты. Я умею читать температуру, перезагружаться, добавлять вещи в cron. Чего я не знаю, так это как собрать все воедино.
Команда получения температуры:
aticonfig --odgt --adapter=all | grep Sensor:
Вывод выглядит следующим образом:
Sensor: Temperature - 77.00 C
Sensor: Temperature - 77.00 C
Sensor: Temperature - 77.00 C
Я бы хотел, чтобы скрипт считал числовое значение и перезагрузился, если он упадет ниже XX.
Можете ли вы помочь мне?
Сохраните этот скрипт, сделайте его исполняемым (chmod +x scriptname.sh
) и запустите его с помощью bash, используя sudo
, поскольку reboot
требуется root.
#! /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 - это темп перезапуска. Вы можете отредактировать это.
Это должно сработать:
#!/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, поэтому я не могу проверить это, но это должно привести к перезагрузке компьютера, если ядро графического процессора упадет ниже 77 ° C.
while true
запускает бесконечный цикл, сценарий будет работать до тех пор, пока не будет уничтожен. awk
проверяет, меньше ли число следующих за последним полем (($NF-1)
) строк, содержащих Sensor:
, что вы выбрали, и, если это так, выходит со статусом выхода 1
. ||
будет выполнена, если команда слева не удалась, если она вышла с ненулевым статусом. Таким образом, если один, если ядра ниже определенной температуры, сценарий awk
не будет выполнен, и система будет перезагружена. sleep 10
просто приостанавливает выполнение сценария на 10 секунд, чтобы вы не заполняли вашу систему запросами.