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

时间:2018-09-07 14:51:00

标签: bash unix hpc sungridengine

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

#! /bin/bash                                                                                                                                                               
#$ -pe mpi 4                                                                                                                                                              
#$ -l h_vmem=128G                                                                                                                                                         

echo "echo using 4 cores and 128 memory per core"

总有没有访问这些值的内容,例如$SGE_PE_MPI,这样我以后就可以在脚本中使用多个内核了,而不必在多个位置进行硬编码?

1 个答案:

答案 0 :(得分:1)

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

#! /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 core\n' \
    "$sge_pe_mpi" "$sge_l_h_vmem"

示例输出:

using 4 cores and 128G memory per core

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