假设我有一个作业脚本,我请求 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
请注意,上面的代码只是为了说明这个想法。 它非常精致。 对特别评论格式的任何更改(例如多余的空格(都会破坏它,重复的评论也是如此。