假设我有一个作业脚本,我在请求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 core\n' \
"$sge_pe_mpi" "$sge_l_h_vmem"
示例输出:
using 4 cores and 128G memory per core
请注意,上面的代码只是为了说明这个想法。这很精致。对特殊注释格式的任何更改(例如额外空格)都会破坏它,重复注释也会如此。