让我们说我有一个作业脚本,我在其中请求4个内核并在标头中设置内存限制:
#! /bin/bash
#$ -pe mpi 4
#$ -l h_vmem=128G
echo "echo using 4 cores and 128 memory per core"
总有没有访问这些值的内容,例如$SGE_PE_MPI
,这样我以后就可以在脚本中使用多个内核了,而不必在多个位置进行硬编码?
答案 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
请注意,上面的代码只是为了说明这一想法。非常精致。特殊注释格式的任何更改(例如多余的空格)都会破坏它,重复注释也会如此。