У меня довольно длинный 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
- исполняемый файл, и у меня нет исходного кода.