如何在unix中运行批处理命令

如何在unix中运行批处理命令

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

相关内容