【问题标题】:Get Job id and put them into a bash command获取 Job id 并将它们放入 bash 命令
【发布时间】:2020-06-28 17:17:20
【问题描述】:

你好,对于一个项目,我只需要在之前的所有运行都完成后才执行一个 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:$1:$2:$3 final.sh 

【问题讨论】:

    标签: linux bash jobs slurm


    【解决方案1】:

    你可以这样做

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

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

    【讨论】:

      【解决方案2】:

      您可以将作业 ID 存储在一个变量中,并将其用于您的下一个命令。类似的东西

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

      然后

      sbatch -d afterok"$jobs" final.sh 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 2011-08-10
        相关资源
        最近更新 更多