访问 SGE 作业脚本标头中设置的变量



假设我有一个作业脚本,我请求 4 个内核并在标头中设置内存限制:

#! /bin/bash                                                                                                                                                               
#$ -pe mpi 4                                                                                                                                                              
#$ -l h_vmem=128G                                                                                                                                                         
echo "echo using 4 cores and 128 memory per core"

无论如何可以访问这些值,例如$SGE_PE_MPI,以便我可以稍后在脚本中使用内核数,而无需在多个位置对其进行硬编码?

程序可以从自身读取值。 示例代码为:

#! /bin/bash
#$ -pe mpi 4
#$ -l h_vmem=128G
readonly sge_pe_mpi=$(sed -n 's/^#$ -pe mpi (.*)/1/p' -- "$0")
readonly sge_l_h_vmem=$(sed -n 's/^#$ -l h_vmem=(.*)/1/p' -- "$0")
printf 'using %s cores and %s memory per coren' 
"$sge_pe_mpi" "$sge_l_h_vmem"

示例输出:

using 4 cores and 128G memory per core

请注意,上面的代码只是为了说明这个想法。 它非常精致。 对特别评论格式的任何更改(例如多余的空格(都会破坏它,重复的评论也是如此。

最新更新