여러 스크립트를 실행하고 각 스크립트가 완료될 때까지 계속합니다.

여러 스크립트를 실행하고 각 스크립트가 완료될 때까지 계속합니다.

내 질문은 동시에 여러 스크립트를 실행할 수 있습니까?입니다. 32개의 CPU가 있는 클러스터에 액세스할 수 있지만 동시에 900개의 스크립트가 있습니다. 이제 내가 원하는 것은 각 스크립트를 대기열에 넣고 한 스크립트가 완료되면 다른 스크립트를 시작하는 것입니다. 나는 모든(또는 거의 모든) CPU가 병렬로 실행되기를 원하기 때문에 간단한 루프를 수행하고 싶지 않습니다.

답변1

비슷한 것을 찾고 있는 것 같습니다.GNU 병렬 유틸리티. 다음은 해당 설명에서 발췌한 것입니다.

각 입력 줄에 대해 GNU Parallel은 해당 줄을 인수로 사용하여 명령을 실행합니다. 명령이 주어지지 않으면 입력된 라인이 실행됩니다. 여러 라인이 병렬로 실행됩니다.

귀하의 경우 다음과 같이 동시 스크립트를 32개로 제한할 수 있습니다.

parallel -j32 ::: ./script1 ./script2 (...) ./script900

또는 parallel파일에서 스크립트 이름을 읽거나 모든 실행이 동일한 스크립트의 인스턴스인 경우 입력 파일에 매개변수를 저장할 수 있습니다. 가능한 다양한 변형에 대한 설명서를 읽어보세요.

답변2

다음을 사용하여 디렉토리의 모든 스크립트를 제거하면 어떻게 되나요?

for FILE in *.sh; do ./$FILE & done;

프로세스 스케줄러가 작업을 수행하도록 합니다.

관련 정보