Сбои с цепочками команд

Для быстрой загрузки вам нужно будет загрузиться с SSD.

Обычно / загрузка составляет от 300 до 500 МБ, сначала установите это на SSD. Обычно я предлагаю / (root) 20 или 25 ГБ также на SSD (после / boot). Теперь вы можете добавить / home или раздел данных на диск 2TB.

Надеемся, что это поможет

0
задан 28 November 2017 в 21:38

6 ответов

Поведение по умолчанию, когда вывод записывается на терминал, должно быть буферизировано в строке, однако, когда оно направлено на файл или на другой процесс с использованием канала, оно буферизуется, возможно, объемом 4 кбайта или 8 кбайт данных. То есть, ваш этнограф должен распечатать эти данные для первого фрагмента, чтобы фактически получить выписку и стать доступным для следующего этапа вашей временной шкалы.

Используйте stdbuf, чтобы включить режим буферизации строк, даже если выход переходит в другой процесс, например stdbuf -oL ethminer [parameters] | cat-or-grep-or-whatever.

По той же причине, если у вас есть более длинный конвейер, возможно, все фазы, но последнее нужно изменить для буферизации строк, например: stdbuf -oL ethminer | stdbuf -oL cat -e | stdbuf -oL egrep pattern1 | egrep pattern2.

[d3 ] Цвета не относятся к этой истории, хотя, как указано в другом ответе, ethminer должен определить, не связан ли его стандартный вывод с терминалом и не должен испускать цветовые коды в этом случае.

0
ответ дан 22 May 2018 в 15:51
  • 1
    Спасибо, много! Мне пришлось добавить stdbuf -oL даже до последнего egrep, потому что иначе он не смог перенаправить вывод в файл ... – Celivalg 28 November 2017 в 21:40
  • 2
    Конечно, я не был ясен там, это не нужно для последнего шага, если он идет на терминал (потому что это поведение по умолчанию), но по-прежнему необходимо, если оно идет в файл, и вы ожидаете, что каждая строка появится там как можно скорее как можно. – egmont 28 November 2017 в 23:17

Поведение по умолчанию, когда вывод записывается на терминал, должно быть буферизировано в строке, однако, когда оно направлено на файл или на другой процесс с использованием канала, оно буферизуется, возможно, объемом 4 кбайта или 8 кбайт данных. То есть, ваш этнограф должен распечатать эти данные для первого фрагмента, чтобы фактически получить выписку и стать доступным для следующего этапа вашей временной шкалы.

Используйте stdbuf, чтобы включить режим буферизации строк, даже если выход переходит в другой процесс, например stdbuf -oL ethminer [parameters] | cat-or-grep-or-whatever.

По той же причине, если у вас есть более длинный конвейер, возможно, все фазы, но последнее нужно изменить для буферизации строк, например: stdbuf -oL ethminer | stdbuf -oL cat -e | stdbuf -oL egrep pattern1 | egrep pattern2.

Цвета не относятся к этой истории, хотя, как указано в другом ответе, ethminer должен определить, не связан ли его стандартный вывод с терминалом и не должен испускать цветовые коды в этом случае.

0
ответ дан 18 July 2018 в 02:27

Поведение по умолчанию, когда вывод записывается на терминал, должно быть буферизировано в строке, однако, когда оно направлено на файл или на другой процесс с использованием канала, оно буферизуется, возможно, объемом 4 кбайта или 8 кбайт данных. То есть, ваш этнограф должен распечатать эти данные для первого фрагмента, чтобы фактически получить выписку и стать доступным для следующего этапа вашей временной шкалы.

Используйте stdbuf, чтобы включить режим буферизации строк, даже если выход переходит в другой процесс, например stdbuf -oL ethminer [parameters] | cat-or-grep-or-whatever.

По той же причине, если у вас есть более длинный конвейер, возможно, все фазы, но последнее нужно изменить для буферизации строк, например: stdbuf -oL ethminer | stdbuf -oL cat -e | stdbuf -oL egrep pattern1 | egrep pattern2.

Цвета не относятся к этой истории, хотя, как указано в другом ответе, ethminer должен определить, не связан ли его стандартный вывод с терминалом и не должен испускать цветовые коды в этом случае.

0
ответ дан 24 July 2018 в 17:34

Большинство программ командной строки, которые обеспечивают цветной вывод терминала, достаточно умны, чтобы распознавать, когда их вывод не идет на терминал, и подавлять цветовые коды. Кажется, что ethminer нет.

Ваше решение состояло в том, чтобы преобразовать непечатаемые коды ANSI в обычный текст с помощью cat -e, а затем проанализировать это. Альтернативным (и, возможно, более надежным) обходным решением может быть разделение цветовых кодов - один из способов сделать это с помощью модуля perl Term :: ANSIColor, например

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | 
  perl -MTerm::ANSIColor=colorstrip -lne 'print colorstrip $_' | grep ...

Однако, если мы сделав это, мы сможем использовать perl вместо grep для выполнения сопоставления. Есть много способов сделать это - вот один из них:

разделил строку на разделительный пробел @F colorstrip на @F и сохранил результаты в @a, чтобы найти индекс массива сопоставление элементов Speed, затем найдите и распечатайте следующий элемент

ex.

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | 
  perl -MTerm::ANSIColor=colorstrip -alne '@a = colorstrip @F; print map { $a[$_+1] } grep { $a[$_] eq "Speed" } 0..$#a'
1
ответ дан 22 May 2018 в 15:51

Большинство программ командной строки, которые обеспечивают цветной вывод терминала, достаточно умны, чтобы распознавать, когда их вывод не идет на терминал, и подавлять цветовые коды. Кажется, что ethminer нет.

Ваше решение состояло в том, чтобы преобразовать непечатаемые коды ANSI в обычный текст с помощью cat -e, а затем проанализировать это. Альтернативным (и, возможно, более надежным) обходным решением может быть разделение цветовых кодов - один из способов сделать это с помощью модуля perl Term :: ANSIColor, например

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | perl -MTerm::ANSIColor=colorstrip -lne 'print colorstrip $_' | grep ...

Однако, если мы сделав это, мы сможем использовать perl вместо grep для выполнения сопоставления. Есть много способов сделать это - вот один из них:

разделил строку на разделительный пробел @F colorstrip на @F и сохранил результаты в @a, чтобы найти индекс массива сопоставление элементов Speed, затем найдите и распечатайте следующий элемент

ex.

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | perl -MTerm::ANSIColor=colorstrip -alne '@a = colorstrip @F; print map { $a[$_+1] } grep { $a[$_] eq "Speed" } 0..$#a'
1
ответ дан 18 July 2018 в 02:27

Большинство программ командной строки, которые обеспечивают цветной вывод терминала, достаточно умны, чтобы распознавать, когда их вывод не идет на терминал, и подавлять цветовые коды. Кажется, что ethminer нет.

Ваше решение состояло в том, чтобы преобразовать непечатаемые коды ANSI в обычный текст с помощью cat -e, а затем проанализировать это. Альтернативным (и, возможно, более надежным) обходным решением может быть разделение цветовых кодов - один из способов сделать это с помощью модуля perl Term :: ANSIColor, например

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | perl -MTerm::ANSIColor=colorstrip -lne 'print colorstrip $_' | grep ...

Однако, если мы сделав это, мы сможем использовать perl вместо grep для выполнения сопоставления. Есть много способов сделать это - вот один из них:

разделил строку на разделительный пробел @F colorstrip на @F и сохранил результаты в @a, чтобы найти индекс массива сопоставление элементов Speed, затем найдите и распечатайте следующий элемент

ex.

/home/USER/ethminer -U -S eu1.ethermine.org:4444 -O 0x*****************.********** --cuda-parallel-hash 4 2>&1 | perl -MTerm::ANSIColor=colorstrip -alne '@a = colorstrip @F; print map { $a[$_+1] } grep { $a[$_] eq "Speed" } 0..$#a'
1
ответ дан 24 July 2018 в 17:34

Другие вопросы по тегам:

Похожие вопросы: