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)
但没什么......
一个主意 ?
您通过不同的方法发送不同的电子邮件.使用#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)