각 하위 디렉터리에 74개의 파일이 있는 하위 디렉터리로 가득 찬 디렉터리가 있습니다. 74개의 파일을 분석하고 모든 디렉터리에서 병렬로 실행하려는 bash 스크립트가 있습니다.
각 하위 디렉터리로 이동하여 bash 스크립트를 수동으로 실행하면 출력이 완벽합니다.
bash 스크립트를 병렬로 실행하려고 하면 bash 스크립트가 하나의 파일에서만 실행되는 것처럼 보입니다.
이것은 스크립트를 병렬로 실행하는 데 사용하는 코드입니다.
parallel "cd {} && bash Final_Fantasy.sh" :::: dir.lst
이상한 점은 위와 동일한 코드를 사용하여 동일한 파일에서 다른 스크립트를 실행하고 있으며 문제가 발생하지 않는다는 것입니다.
내가 실행하려는 스크립트는 awk 및 sed를 사용한 간단한 쓰기 및 덮어쓰기와 일부 읽기 while 루프입니다.
내 병렬 코드에 문제가 있나요? 아니면 어디서 문제를 찾아야 합니까?
감사해요!
편집 1:
1) Script1.sh: Final_Fantasy.sh와 단일 출력 파일(Output1.txt)을 빈 디렉터리에 복사합니다.
2) dir.lst에 있는 각 디렉터리에는 이제 Output1.txt와 Final_Fantasy.sh라는 2개의 파일만 포함됩니다.
3) Final_Fantasy.sh의 첫 번째 줄은 Output1.txt를 74개의 개별 파일로 자릅니다.
4) Final_Fantasy에는 read-while 루프에서 한 번에 74개 파일 중 하나를 편집할 수 있는 여러 줄의 awk, sed 및 grep이 포함되어 있습니다.
5) 일부 단계에서는 나중에 사용할 수 있도록 출력을 .txt 파일에 기록합니다.
6) 루프의 마지막 단계는 두 개의 .txt 파일을 cat
하나로 묶는 것입니다.
exit
문제가 발생할 경우 루프 문제를 해결하기 위해 파일 끝에 하나가 더 있습니다. 다음과 같습니다.
done < $filename2 done < $filename1 exit more code that works
이 시점에서 내가 생각할 수 있는 유일한 것은 1) HPC는 내 통제 범위를 벗어났다는 것입니다. 2) exit
모든 파일을 분석한 후가 아니라 루프의 첫 번째 반복 후에 재미있게 행동하고 종료하십시오.
편집 2) 내 로컬 컴퓨터에서 이 문제를 병렬로 재현할 수 없습니다. 이로 인해 이것이 이상한 HPC 문제라고 생각됩니다.그렇게 생각하지 않아요나는 통제권을 가지고 있습니다.
parallel
편집 3) 문제가 발생하는 위치를 확인할 수 있도록 현재 수행 중인 작업을 단계별로 출력하는 방법이 있습니까 ?
답변1
parallel
해당 인수를 직접 실행합니다. 쉘을 사용하지 않으면 쉘 작업을 수행할 수 없습니다. sh -c
뒤쪽 에 넣으세요 parallel
.
업데이트: 위의 내용은 moreutils 병렬 처리에만 적용되며 이 질문과 관련된 GNU 병렬 처리에는 적용되지 않습니다.