GNU 병렬 처리의 동시성 문제

GNU 병렬 처리의 동시성 문제

GNU Parallel에서 스크립트가 올바르게 실행되는 데 문제가 있습니다.

비슷한 것이 있습니다 sub_script(이것들은 모두 실제로 단순화된 버전입니다).

#! /bin/bash   
input=$1  
# input is a date in YYYYMMDD format  
mkdir -p $input

cd $input  
filename=$input'.txt'  
echo 'line1' > $filename  
echo 'The date is: '$input >> $filename

그런 다음 다음과 같은 multi.sh 파일이 있습니다.

cd /home/me/scripts; ./sub_script 20141001   
cd /home/me/scripts; ./sub_script 20141002   
cd /home/me/scripts; ./sub_script 20141003   
cd /home/me/scripts; ./sub_script 20141004   
cd /home/me/scripts; ./sub_script 20141005    

이 명령을 사용하여 GNU를 사용하여 여러 코어를 통해 이러한 모든 기능을 병렬로 실행하려고 합니다.

parallel -j 3 --delay 1 < multi.sh 

3개의 코어에서 실행됩니다. 문제를 방지하기 위해 각 행 실행 사이에 1초 지연을 구현하려고 시도했지만 작동하지 않았습니다.

잘못된 파일이 포함된 새 디렉터리를 사용하는 데 문제가 있습니다. 이는 multi.sh에 의해 지정된 코어 수보다 많은 행이 있는 경우에만 발생 하고 가끔씩만 발생한다고 생각합니다 -j(항상 재현 가능하지는 않음). parallel라인을 연속으로 두 번 다시 실행하면 다른 결과를 얻을 수 있습니다 . 때로는 파일 대신 디렉터리 20141002.txt에 파일을 가져올 수도 있습니다 . 다른 경우에는 디렉토리 에서만 파일을 가져올 수 있습니다 .2014100520141005.txt20141002.txt201005

이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? GNU 병렬이 선호되지만 다른 명령도 시도해 볼 수 있습니다.

답변1

병렬성을 사용하는 경우 추가 배치 파일이 필요한 이유는 무엇입니까?

parallel -j3 --delay 1 ./sub_script ::: 20141001 20141002 20141003 20141004 20141005

관련 정보