PBS扭矩电子邮件变量

Yoh*_*lle 2 cluster-computing pbs torque

这是我使用的pbs的一个例子:

#!/bin/bash
#PBS -S /bin/bash
#PBS -N myJob
#PBS -l nodes=1:ppn=4
#PBS -l walltime=50:00:00
#PBS -q route

export MYMAIL=mytestmail@testmail.com
#PBS -m ae
#PBS -M mytestmail@testmail.com

./script1.sh

echo $PBS_JOBID $PBS_O_WORKDIR | mail -s "$PBS_JOBNAME script1 done" $MYMAIL

./script2.sh

echo $PBS_JOBID $PBS_O_WORKDIR | mail -s "$PBS_JOBNAME script2 done" $MYMAIL

./script3.sh

echo $PBS_JOBID $PBS_O_WORKDIR | mail -s "$PBS_JOBNAME script3 done" $MYMAIL

./script4.sh
Run Code Online (Sandbox Code Playgroud)

如您所见,我希望在此过程中收到通知.我的问题是用户必须写两次他们的电子邮件地址.

我试过了:

#PBS -M  $MYMAIL
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我还试图找到一个包含存储期间的电子邮件的pbs变量

#PBS -M mytestmail@testmail.com
Run Code Online (Sandbox Code Playgroud)

但没什么......

一个主意 ?

chu*_*uck 5

您通过不同的方法发送不同的电子邮件.使用#PBS -M行,您将在头节点上告诉pbs_server应该发送有关作业的电子邮件,并使用"| mail"从运行该作业的节点向用户发送邮件.

Torque似乎没有设置包含-M内容的环境变量,因此我们无法将其传递给邮件.

我有两个想法.第一种是尝试从qstat捕获Mail_Users行并解析它.

qstat -f [job number] | grep Mail_Users
Run Code Online (Sandbox Code Playgroud)

第二种是为每个用户创建一个.forward文件,因为Torque默认会通过电子邮件发送本地用户帐户,从而消除#PBS -M行.您仍然需要将电子邮件或帐户名称传递给邮件,但您可以通过以下方式获取:

mail -s "$PBS_JOBNAME script1 done" `whoami`
Run Code Online (Sandbox Code Playgroud)