获取作业 ID 并将它们放入 bash 命令中

Get Job id and put them into a bash command

你好,对于一个项目我只需要在所有以前的 运行 都完成后才需要执行一个 bash 文件,所以我使用 :

sbatch -d afterok:$JobID1:$JobID2:$JobIDN final.sh 

为了运行我做的JobIDN

for job in Job*.sh ; do sbatch $job; done 

然后打印所有 jobIDs

我只是想知道是否有人有一个命令来获取这些 ID 并将它们直接放入命令中:

sbatch -d afterok:$JobID1:$JobID2:$JobIDN final.sh 

举例

for job in Job*.sh ; do sbatch $job; done 
1
2
3


sbatch -d afterok::: final.sh 

您可以将作业 ID 存储在变量中并将其用于下一个命令。像

jobs=$(seq 1 10 | awk '{ printf ":%s",  }')
     # \------/
 # your jobID printing function here

然后

sbatch -d afterok"$jobs" final.sh 

你可以用

for job in Job*.sh ; do sbatch --parsable $job; done | paste -s -d: | xargs -I{} sbatch --depedency afterok:{} final.sh

paste 命令将收集所有作业 ID 并将它们写在一行中,以冒号分隔,而 xargs 将获取结果并将其插入到 {} 占位符处.有关作业 ID 的信息通过管道传递。