我正在尝试运行一个批处理脚本,其中 mpirun 嵌套在while循环中,就像这样
while read line
do
mpirun -np 4 myexec > /dev/null
done < case.txt
但是这个脚本只返回一个循环结果。每当可执行文件完成时,循环就会中断。 我也试图没有并行运行代码,它工作正常。 如果我用正常的while循环替换 while read line ,比如 while [$ count -le 9] ,它也可以。 For循环也是好的。 我只是想不出来。希望有人能告诉我为什么会这样。
答案 0 :(得分:3)
看起来mpirun
从stdin
读取,在这种情况下为case.txt
。这将在循环的第一次运行期间读取文件中的所有行。在read
的下一次尝试中,文件已经被完全读取,这就是循环结束的原因。
尝试将/dev/null
分配给其stdin:
while read line
do
mpirun -np 4 myexec > /dev/null < /dev/null
done < case.txt