2013-10-07 5 views
1

병렬 처리를위한 bash for 루프를 재실행하는 데 정말로 고심하고 있습니다.병렬 procell 용 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 

내 실수로 내게 조언 해 줄 수 있습니까?

+0

정확한 오류 메시지가 무엇입니까? 'for' 루프는 문제를 재현하는데 정말로 필요합니까? – tripleee

답변

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