我使用 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 &
现在我想在命令行窗口中为用户显示此过程的进度条。有什么办法吗?
答案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