Как показать индикатор выполнения на экране на основе вывода программы?

Я сделал вычисление с помощью CUDA, и требуется приблизительно 12 минут для завершения целого вычисления. Я использую эту команду в a .sh файл для запущения программы:

CUDA_VISIBLE_DEVICES=0 ./a1.out | tee -a output.txt &
CUDA_VISIBLE_DEVICES=1 ./a2.out | tee -a output.txt &
CUDA_VISIBLE_DEVICES=2 ./a3.out | tee -a output.txt &
CUDA_VISIBLE_DEVICES=3 ./a4.out | tee -a output.txt &
CUDA_VISIBLE_DEVICES=4 ./a5.out | tee -a output.txt &
CUDA_VISIBLE_DEVICES=5 ./a6.out | tee -a output.txt &

Теперь я хочу показать индикатор выполнения для этого процесса в окне командной строки для пользователя. Есть ли существует какой-либо способ сделать это?

0
задан 17 July 2017 в 01:01

1 ответ

Использовать pv(1) в режиме строки:

COMMAND | pv --line-mode --size 1000 >> output.txt

или короче

COMMAND | pv -ls 1000 >> output.txt

-s/--size определяет номер ожидаемых устройств вывода (байты по умолчанию или строки в режиме строки).

Если Вы хотите получить вывод, и отобразить прогресс нескольких команд, выполняющих параллельно Вас, может сделать так с составным оператором:

{ COMMAND1 & COMMAND2 & COMMAND3; } | pv -ls 1000 >> output.txt

В этом случае необходимо указать количество ожидаемых устройств вывода всех команд всего.

Демонстрация

for i in {1..200}; do sleep 0.1; echo "$i"; done | pv -ls 200 > /dev/null
2
ответ дан 2 November 2019 в 22:46

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

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