슈퍼컴퓨터(UNIX 기반)를 이용하여 공부하고 있습니다.
.sh 형식으로 여러 명령을 동시에 실행해야 합니다.
나는 매번 이것을한다
am@tinaroo1:~/.../Codes> qsub 69sk_01_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_01_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_140239.sh
...
...
am@tinaroo1:~/.../Codes> qsub 69sk_01_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_158220.sh
100개의 파일에 대해 100개의 명령을 입력해야 합니다.
한 번에 100개의 명령을 실행할 수 있는 방법이 있습니까?
답변1
루프를 사용하여 실행할 수 있습니다
for script in 69sk*.sh; do
qsub "$script"
done
스크립트 qsub
는 자신을 백그라운드로 보내고 즉시 반환합니다. 이 스크립트 없이 스크립트를 실행하려면 다음을 사용하여 백그라운드로 직접 분기할 수 있습니다 &
.
for script in 69sk*.sh; do
./"$script" &
done
이렇게 하면 스케줄러가 반드시 각 스크립트를 자체 코어에 배치하지는 않습니다. 100개의 코어가 있고 각 스크립트를 하나의 코어에 고정하려면 더 많은 작업이 필요합니다.