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
에 파일을 가져올 수도 있습니다 . 다른 경우에는 디렉토리 에서만 파일을 가져올 수 있습니다 .20141005
20141005.txt
20141002.txt
201005
이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? GNU 병렬이 선호되지만 다른 명령도 시도해 볼 수 있습니다.
답변1
병렬성을 사용하는 경우 추가 배치 파일이 필요한 이유는 무엇입니까?
parallel -j3 --delay 1 ./sub_script ::: 20141001 20141002 20141003 20141004 20141005