我有一个 SLURM 文件,例如
#!/bin/bash
#SBATCH -n 1 # two cores
#SBATCH --mem=1G # RAM
#SBATCH --time=01:99:99 # total run time limit (HH:MM:SS)
#SBATCH --mail-user=rylansch
#SBATCH --mail-type=FAIL
python foo.py
我想共享此文件,而无需手动更改邮件用户。我该怎么做?如果我将
#SBATCH --mail-user=rylansch
替换为 #SBATCH --mail-user=$USER
,会起作用吗?
Bash 变量
$USER
不会在注释中展开,因此您无法在 #SBATCH --mail-user=$USER
中使用它。
但是文档指出
--mail-user=接收由--mail-type定义的状态更改电子邮件通知的用户。默认值为提交用户。
所以你可以尝试根本不指定
--mail-user
(但当然仍然指定--mail-type=FAIL
)
要制作任何用户都可以使用的带有电子邮件通知的通用 bash 脚本,请从脚本中删除
#SBATCH --mail-user
行。
然后在文档中添加用户应使用 mail-user
标志调用脚本来获取电子邮件:
sbatch --mail-user="$EMAIL" my_script.sh
此外,您可以在 SBATCH 指令下方动态设置
mail-user
,以防用户未传递该指令。
scontrol update job $SLURM_JOB_ID [email protected]
甚至更好:
if [ -z "$SLURM_MAIL_USER" ]; then
scontrol update job $SLURM_JOB_ID [email protected]
fi
通过动态设置,他们在作业开始时不会收到初始电子邮件,但他们会收到所有其他电子邮件,包括完成情况。