큰 파일을 분할, 정렬 및 병합하여 정렬을 병렬 처리하려면이 blog entry을 따랐습니다. 단계는 다음과 같습니다 정렬 단계가 완료 될 때까지 2 단계와 3 사이'대기'가 분리 된 작업을 기다리지 않는 이유
split -l5000000 data.tsv '_tmp'
ls -1 _tmp* | while read FILE; do sort $FILE -o $FILE & done
sort -m _tmp* -o data.tsv.sorted
은, 하나는 기다려야합니다. 나는 man
페이지에 따라 wait
이 인수없이 호출되었으므로 어떤 인자도없이 wait
이 올바른 것이 될 것이라고 가정했습니다. all currently active child processes are waited for
. top
가 sort
프로세스가 계속 실행된다 나타내지 만
I 쉘이 시도 때 (즉, 실행 단계 1 및 2 다음 wait
) 즉시 복귀 wait
.
궁극적으로 나는 그걸로 스크립트의 속도를 높이고 싶습니다. 그래서 쉘에서 수동으로 할 수있는 일은 아닙니다.
나는 이 버전 8부터 --parallel
옵션을 가지고 있지만, 나는 이것을 실행하고 이전 버전이 설치되어 있으며이 문제를 해결하는 방법에 대해서도 궁금하다. the bash
man page 가입일
'1! ... | FILE 읽기 '가 잘못되었습니다. _tmp *에서'for FILE을 사용하십시오; 대신 '할'. – chepner