Перейти к содержимому

YoBit.Net





- - - - -

Майнинг без остановки!

Написано egorbtc, 16 January 2013 · 18371 Просмотров

В процессе майнинга битков я столкнулся с проблемой. А именно с тем, что на моей рабочей машинке периодически отваливался cgminer. Связано это, я думаю, с тем, что это происходит именно на рабочем компьютере. То одну программу запустишь, то другую... А операционкой на компе, к сожалению, является Винда. Но я не буду сейчас обсуждать ее плюсы и минусы. Лучше расскажу о том, как я проблему решил. И так цель:
  • Необходимо обеспечить постоянную и бесперебойную работу программы cgminer. В случае, если программа завершилась аварийно, обеспечивать ее перезапуск.
  • Необходимо периодически программу перезагружать (например раз в час), чтобы исключить возникновение возможных ошибок.
  • Запуск программы необходимо осуществлять в скрытом режиме (зачем мозолить глаза случайным свидетелям).
Для решения своей задачи я воспользовался такой замечательной программой, как nnCron. Вот, что про нее пишут на родном сайте:

nnCron - это компактный (900k), но мощный планировщик и менеджер автоматизации с собственным скриптовым языком, основанным на синтаксисе языка программирования Форт. Помимо традиционной для планировщика способности запускать в указанное время программы, "напоминалки" и открывать документы, nnCron умеет:
  • запускать произвольные программы как сервисы
  • запускать задачи "от имени" указанных юзеров
  • отслеживать и перезапускать просроченные задачи и напоминалки
  • выключать или "усыплять" компьютер в заданное время, "будить" компьютер, чтобы запустить задачу
  • отображать/скрывать/закрывать/убивать/сворачивать/разворачивать и прятать в системный трей заданные окна, добавлять в трей произвольные иконки
  • менять размер и местоположение окон, а также изменять их "прозрачность"
  • выводить на экран и в лог-файл любые сообщения, в том числе и запросы на выполнение указанных действий
  • работать с клипбордом, файлами и реестром
  • эмулировать клавиатурный ввод и операции с мышкой
  • звонить и класть трубку
  • воспроизводить аудио-файлы и "пищать" через системный динамик
  • синхронизировать системное время
  • присваивать процессам указанный приоритет и прерывать работу любых запущенных процессов
  • автоматически перезапускаться после фатальных ошибок
Немаловажным фактом является возможность работы программы в качестве службы. nnCron работает в Windows 7 32 и 64 бит.
Саму программу я скачал с родного сайта по ссылке. Это бета версия, аж от 2008 года :-) При установке я указал, что программа устанавливается как системная служба:

Изображение

Данная программа абсолютно бесплатна для жителей России при некоммерческом ее использовании. Мы же не будем с ее помощью коммерцией заниматься ;-) Чтобы она нам не докучала вплывающими окошками о пробном периоде, нам необходимо ее зарегистрировать. Для этого в командной строке вводим команду:
"C:\Program Files\nnCron\tm.exe" xReg
Думаю, что как вызвать командную строку объяснять не нужно. Да, если у вас Windows 7 64 Bit, то программа, скорее всего, установится в директорию "Program Files (x86)". Тогда код будет выглядеть так:
"C:\Program Files (x86)\nnCron\tm.exe" xReg
В появившемся окошке введите xUSSR регистрация в качестве имени и текущий день недели (по-pусски) вместо паpоля:

Изображение
Далее необходимо записать несколько задач для nncron. Правой кнопкой мыши щелкаем по значку nnCron в трее, выбираем пункт "Добавить задачу":

Изображение

Открывается окно с новой задачей. Даем ей название, например "Reset_mining". Открываем вкладку "Дополнительно":

Изображение

Вводим код скрипта:

Time: 0 * * * * *
Action:
KILL: "cgminer.exe"
PAUSE: 3000
StartIn: "E:\COINS\cgminer-2.9.4-win32"
SWHide NormalPriority
START-APP: E:\COINS\cgminer-2.9.4-win32\pool_maxi_norm.bat

Что скрипт делает:

Time: 0 * * * * * - запускаться каждую 0-ю минуту каждого часа
Action:
KILL: "cgminer.exe" - убить процесс cgminer
PAUSE: 3000 - подождать 3 сек.
StartIn: "E:\COINS\cgminer-2.9.4-win32" - работать в папке. У вас будет та папка, откуда производится запуск cgminer
SWHide NormalPriority - запустить процесс скрытым с нормальным приоритетом
START-APP: E:\COINS\cgminer-2.9.4-win32\pool_maxi_norm.bat - запустить bat файл. У меня запуск cgminer'а осуществляется с помощью батника. У вас батник может иметь другое имя и храниться по другому пути.

Сохраняем скрипт. Перечитываем все задания nnCron:

Изображение

Мы тем самым обеспечили перезапуск cgminer'а каждый час. Теперь запишем второй скрипт с таким содержимым:

Time: */5 * * * * *
Rule: PROC-EXIST: "cgminer.exe" NOT
Action:
StartIn: "E:\COINS\cgminer-2.9.4-win32"
SWHide NormalPriority
START-APP: E:\COINS\cgminer-2.9.4-win32\pool_maxi_norm.bat

Сохраняем скрипт и перечитываем кронтабы. Данный скрипт раз в 5 минут проверяет наличие работающего процесса cgminer.exe. В случае если он не существует, осуществляем его запуск.
Итак мы получили бесперебойно работающий cgminer. При этом его окошко не болтается на виду у всех. Данное решение можно применить и на чужих машинах для скрытого майнинга. Нет-нет, боже упаси, я не призываю вас к противоправным действиям. Все должно быть по обоюдному согласию :-)

P.S. А еще с помощью nnCron мы можем выполнять и другие полезные действия связанные с майнингом и просто полезные для вас лично. Одним из решений, которое я применял, была ловля удачи в соло майнинге. С некоторой периодичностью я прибивал работу cgminer'а на пул, и запускал соло майнинг на пару часов. Таким образом был пойман один блок, когда за него еще давали 50 битков. Но потом удача отвернулась от меня и я этот режим отключил.

  • 1



"Красноглазый" вариант:
1) Создаём файл script.sh:
#!/bin/bash
killall cgminer
sleep 3
/путь/cgminer -параметры

2) Делаем исполняемым:
chmod +x script.sh
3) Открываем cron (присутствует по-умолчанию во всех дистрибутивах):
crontab -e
При первом запуске спросит какой использовать текстовый редактор, см. п. 5
4) Добавляем строчку:
0 * * * * /путь/script.sh
или:
0 * * * * export DISPLAY=:0 && xterm -e "/путь/script.sh"
(для запуска в теминале)
или:
0 * * * * bash /путь/script.sh
(если шаг 2 был пропущен)
5) сохраняем и выходим
:wq для vim или Ctrl+o; Ctrl+x для nano
vim удобнее, но перед его использованием нужно прочитать руководство,
если оно не прочитано, нужно использовать nano
    • -1
Точно. На своих машинах с BAMT на борту я именно cron и использую. А nnCron пришел как раз из мира Unix. Спасибо за дополнение.
Интересно совет "красноглазым" назван. Хотя иногда с виндой так упаришься, что начинаешь чувствовать себя не только красноглазым, но еще и красножоп...м.
    • 0

Интересно совет "красноглазым" назван.

Назвал на правах мема.
    • 0

Мой вариант делаешь батник с перезагрузкой и в планировщике задач выставляешь запуск этого батника по событию в логах. Ну а код события зависания cgminera сам посмотришь и вуаля при зависание комп перезагружается =) 

    • 0

Хренасе тут сложностей. Все можно сделать много проще: пишем какой-нибудь такой батник...

cd "C:\path\to\cgminer-2.11.0-win32"
tasklist /FI "IMAGENAME eq cgminer.exe" 2>NUL | find /I /N "cgminer.exe">NUL
if "%ERRORLEVEL%" NEQ "0" start /min cgminer.exe -o http://stratum.bitcoin.cz:3333 -u SuperUser.worker1 -p p4s$w0rd

...и запускаем его стандартным планировщиком (Администрирование -> Планировщик заданий). И все :)

    • 1

Автор, а Вы не подумали что каждый час у Вас принудительно грохается cgminer, и за те 3 секунды что идет ожидание, вторая Ваша задача, та которая каждые 5 минут проверяет - "увидит" что скрипт не запущен и запустит его, а потом и 3 секунды истекут и запустится второй cgminer - с теми же параметрами - и система в дауне.

    • 0

Поставил программку..работает!))))))))

    • 0

Я для таких целей для вас давно всё написал.

http://dwwb.ru/MineRestarter

Перезапускает cgminer или bfgminer, если нагрузка на GPU падает до 30%

Пользуйтесь наздоровье

    • 0