다음과 같은 SGE 클러스터에서 3개의 명령을 병렬로 실행하려고 합니다.
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd
done
sem --wait
따라서 내 명령이 성공적으로 실행되고 완료됩니다. 이는 생성된 출력 로그에서 추론할 수 있으며 해당 명령이 더 이상 노드에서 실행되지 않는 것을 볼 수 있습니다. 그러나 qsub sem --wait를 사용하여 제출하면 무기한 대기하게 됩니다. 또는 대화형 모드에서 실행하고 a. 수동으로 명령을 입력하고 b. 두 가지 방법 모두 성공적으로 완료됩니다. sem을 실행하는 데 제가 놓친 것이 있나요?
도와주셔서 감사합니다.
답변1
각 명령을 순서대로 실행합니다. 스크립트가 도착하면 sem --wait
세 가지 명령이 모두 실행되고 완료된 것입니다.
&
줄 sem -j 3 $cmd
에 하나를 추가해 보세요 . 그러면 백그라운드에서 각 명령이 병렬로 실행됩니다.
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd &
done
sem --wait