我有一个相当长的pipe
,使用mpirun
执行作业,然后复制文件。现在,cp
发生在mpirun
完成之前。我认为该错误是由于某些线程可能已完成,并且被下一个作业覆盖(正确复制了*.opt3
,而不是*.opt1
和*.opt2
)。如何让cp
等到工作真的完成?
mpirun -np $NPROCS --machinefile $PBS_NODEFILE vasp_std; cp INCAR INCAR.opt1; cp CONTCAR POSCAR.opt1; cp OUTCAR OUTCAR.opt1; mv CONTCAR POSCAR; sed -i 's/EDIFF = 1.00e-04/EDIFF = 1.00e-05/g' INCAR; mpirun -np $NPROCS --machinefile $PBS_NODEFILE vasp_std; cp INCAR INCAR.opt2; cp CONTCAR POSCAR.opt2; cp OUTCAR OUTCAR.opt2; mv CONTCAR POSCAR; sed -i 's/ISIF = 3/ISIF = 2/g' INCAR;mpirun -np $NPROCS --machinefile $PBS_NODEFILE vasp_std; cp INCAR INCAR.opt3; cp CONTCAR POSCAR.opt3; cp OUTCAR OUTCAR.opt3
vasp_std
是可执行文件,我没有源代码。