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

问题描述 投票:0回答:1

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

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

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

反正有没有访问这些值,比如$SGE_PE_MPI,以便我可以在脚本中稍后使用核心数而无需在多个位置进行硬编码?

bash unix hpc sungridengine
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.