Я сделал вычисление с использованием CUDA, и для завершения всего вычисления требуется около 12 минут. Я использую эту команду в файле .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 &
Теперь я хочу показать индикатор выполнения для этого процесса в окне командной строки для пользователя. Есть ли способ сделать это?
Используйте 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
[d5 ] В этом случае вам нужно указать количество ожидаемых единиц вывода для всех команд в целом. for i in {1..200}; do sleep 0.1; echo "$i"; done | pv -ls 200 > /dev/null
Используйте 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
Используйте 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