我正在使用超级计算机(基于 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 个核心,并且希望每个脚本都锁定到一个核心,则需要更多工作。