如何使用一个 bash 脚本 运行 多个独立作业?

How can I run several independent jobs using one bash script?

我有几个独立的作业,我想在一个计算机节点上同时 运行。

我想 运行 每个作业只使用请求节点的一个核心。我如何编写 bash 脚本来执行此操作?

这是我写的bash脚本,但是没用

#!/bin/bash
#SBATCH --job-name=20
#SBATCH --partition=the_partition
#SBATCH --nodes=1
#SBATCH --ntasks=20
for n in {1..20};
do
cd "dictionary$n"
./ the job
done 

如何修改脚本以同时 运行 20 个独立作业?

最简单的解决方案是使用作业数组:

#!/bin/bash
#SBATCH --job-name=20
#SBATCH --partition=the_partition
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --array=1-20
cd "dictionary$SLURM_ARRAY_TASK_ID"
./ the job

以上脚本将创建一个包含 20 个作业的作业数组,每个作业将 cd 到基于 $SLURM_ARRAY_TASK_ID 变量的目录,该变量将取 1 到 20 之间的不同值数组中的每个作业。