捕获 SLURM 批处理脚本中使用的电子邮件地址
Capturing the email address used in a SLURM batch script
我有一个 SLURM (v19.05.6) 批处理脚本:
test.sh
:
#!/bin/bash
#SBATCH --mail-user=First.Last@domain.com
#SBATCH --mail-type=ALL
env
在我的脚本中,我希望能够获取 SLURM 用于向用户发送邮件的电子邮件地址(即 First.Last@domain.com
)。我打印了环境(即 env
),它没有设置为环境变量。查看 sacct
的手册页也不包含电子邮件地址字段。
问题 :
如何获取 SLURM 用于向用户发送电子邮件的电子邮件地址?在我的用例中,我想捕获该电子邮件地址并在随后生成的作业中使用它。
您总是可以尝试从作业脚本中获取它:
MAIL=`grep -m 1 "mail-user=" [=10=] | cut -d = -f2`
-m 1
在第一次匹配时停止 grep,[=13=]
解析为脚本的路径。
我认为它甚至是我的首选版本,因为它不需要与 slurmctld 进行额外通信。对于较新的版本 (20.02+),您还可以解析 scontrol
:
的输出
MAIL=`scontrol show job ${SLURM_JOB_ID} | grep MailUser | tr -s ' ' | cut -d ' ' -f 2 | cut -d = -f 2`
我有一个 SLURM (v19.05.6) 批处理脚本:
test.sh
:
#!/bin/bash
#SBATCH --mail-user=First.Last@domain.com
#SBATCH --mail-type=ALL
env
在我的脚本中,我希望能够获取 SLURM 用于向用户发送邮件的电子邮件地址(即 First.Last@domain.com
)。我打印了环境(即 env
),它没有设置为环境变量。查看 sacct
的手册页也不包含电子邮件地址字段。
问题 :
如何获取 SLURM 用于向用户发送电子邮件的电子邮件地址?在我的用例中,我想捕获该电子邮件地址并在随后生成的作业中使用它。
您总是可以尝试从作业脚本中获取它:
MAIL=`grep -m 1 "mail-user=" [=10=] | cut -d = -f2`
-m 1
在第一次匹配时停止 grep,[=13=]
解析为脚本的路径。
我认为它甚至是我的首选版本,因为它不需要与 slurmctld 进行额外通信。对于较新的版本 (20.02+),您还可以解析 scontrol
:
MAIL=`scontrol show job ${SLURM_JOB_ID} | grep MailUser | tr -s ' ' | cut -d ' ' -f 2 | cut -d = -f 2`