我有一个 bash 脚本,它执行各种每周数据收集任务并生成报告,然后将其回显到要发送的电子邮件中。我已在 Linux 终端中手动运行该脚本,并确认我可以从中接收电子邮件。该脚本的格式如下:
#!/bin/bash
### Code to perform data collection and generate an output text file ###
(
echo "Email greeting..."
echo "${OUTPUT}"
echo "More email stuff..."
) | mail -s "subject" "email@address"
echo "Report from ${OUTPUT} sent."
一些数据收集任务非常消耗资源,因此我编写了一个批处理作业提交脚本,将作业提交到 HPC 计算能力的队列中,如下所示:
#!/bin/bash
#SBATCH --job-name=DATA_COLLECTION_REPORT
#SBATCH --ntasks=1
#SBATCH --time=06:00:00
#SBATCH --mem-per-cpu=250G
#SBATCH --partition=cpu
bash /PATH/TO/DATA_COLLECTION_SCRIPT.sh
然后为了自动化提交,我只是使用 crontab 来安排作业。为了说明这一点,当我运行
crontab -l
时,终端返回以下内容:
0 1 * * 1 sbatch /PATH/TO/SLURM_DATA_COLLECTION_JOB_SCRIPT.sh
当我从 cron 守护程序收到电子邮件时,我可以确认 crontab 作业正在执行。此外,SLURM 运行并完成我的工作,因为我有一个 SLURM 输出文件,其内容如下:
Report from output/file/path/OUTPUT_FILE.txt sent.
但是我从未收到过电子邮件。
我还尝试使用带有虚拟报告的 crontab 运行脚本,以跳过资源密集型数据收集阶段。我手动创建 OUTPUT_FILE.txt 并安装 cronjob 来发送电子邮件。这工作正常,所以我认为 SLURM 运行脚本的电子邮件部分存在问题。
您可以通过添加特定节点名称
--nodelist=one_of_your_node_name_in_the_cpu_partition
并删除--time
或将其减少到XX分钟来测试slurm部分