替换并行procell的bash for循环

时间:2013-10-07 14:27:11

标签: bash loops for-loop parallel-processing gnu-parallel

我真的在努力重做bash for循环并行运行。

循环是这样的:

for i in `cat names`
do
    cp $i.pqr dum.pqr
    apbs parameters.in
    mv dum.grd $i.grd
    rm dum.grd
done

我没试这么成功。它告诉我'需要-c的参数'

for i in `cat names`
do
    cp $i.pqr dum.pqr
    parallel -j8 apbs parameters.in
    mv dum.grd $i.grd
    rm dum.grd
done

任何人都可以告诉我我的错误吗?

1 个答案:

答案 0 :(得分:0)

我假设apbs采用'dum.pqr'并将其变成'dum.grd'。因此,如果2个apbs同时运行,它们将覆盖dum.grd。你需要确保名称是唯一的。也许使用dirs:

func my_apbs {
  mkdir $1
  cp $1.pqr $1/dum.pqr
  cd $1
  apbs parameters.in
  mv dum.grd ../$1.grd
  cd ..
  rm -r $1
}
export -f my_apbs
parallel my_apbs :::: names

您没有写过是否观看了介绍视频https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1或浏览了教程:http://www.gnu.org/software/parallel/parallel_tutorial.html