| #!/bin/bash | |
| # Make strings lower case for nice email formatting | |
| SLURM_MAIL_TYPE=${SLURM_JOB_MAIL_TYPE,,} | |
| SLURM_JOB_STATE=${SLURM_JOB_STATE,,} | |
| MAIL_BODY=$(mktemp) | |
| function showParamIfSet { | |
| name="$1" | |
| value="$2" | |
| if [ ${#value} -gt 0 ] | |
| then | |
| echo " $name:'$value'" >> $MAIL_BODY | |
| fi | |
| } | |
| echo "This is a notification email about job $SLURM_JOB_ID($SLURM_JOB_NAME) on cluster:$SLURM_CLUSTER_NAME, the job has $SLURM_MAIL_TYPE." >> $MAIL_BODY | |
| case $SLURM_MAIL_TYPE in | |
| began) | |
| echo "Job was queued for $SLURM_JOB_QUEUED_TIME" >> $MAIL_BODY | |
| ;; | |
| ended|requeued|failed) | |
| echo "Job was running for $SLURM_JOB_RUN_TIME and returned exit code: $SLURM_JOB_EXIT_CODE" >> $MAIL_BODY | |
| ;; | |
| esac | |
| echo "Job details:" >> $MAIL_BODY | |
| showParamIfSet "Array JobId" "$SLURM_ARRAY_JOB_ID" | |
| showParamIfSet "Array Task" "$SLURM_ARRAY_TASK" | |
| showParamIfSet "Array TaskId" "$SLURM_ARRAY_TASK_ID" | |
| showParamIfSet "Slurm Cluster Name" "$SLURM_CLUSTER_NAME" | |
| showParamIfSet "HetJobId" "$SLURM_HET_JOB_ID" #SLURM_PACK_JOB_ID is a synonym | |
| showParamIfSet "HetJob List" "$SLURM_HET_JOB_NODELIST" #SLURM_PACK_NODELIST is a synonym | |
| showParamIfSet "HetJob Offset" "$SLURM_HET_JOB_OFFSET" #SLURM_PACK_JOB_OFFSET is a synonym | |
| showParamIfSet "Job Account" "$SLURM_JOB_ACCOUNT" | |
| showParamIfSet "Job Requested Features" "$SLURM_JOB_CONSTRAINTS" | |
| showParamIfSet "Slurm derived exit code" "$SLURM_JOB_DERIVED_EC" | |
| showParamIfSet "Slurm job exit code" "$SLURM_JOB_EXIT_CODE" | |
| showParamIfSet "Job gid" "$SLURM_JOB_GID" | |
| showParamIfSet "Job group name" "$SLURM_JOB_GROUP" | |
| showParamIfSet "JobId" "$SLURM_JOB_ID" | |
| showParamIfSet "Job requested licenses" "$SLURM_JOB_LICENSES" | |
| showParamIfSet "Job name" "$SLURM_JOB_NAME" | |
| showParamIfSet "Job node List" "$SLURM_JOB_NODELIST" | |
| showParamIfSet "Job partition" "$SLURM_JOB_PARTITION" | |
| showParamIfSet "Job queued time" "$SLURM_JOB_QUEUED_TIME" | |
| showParamIfSet "Job run time" "$SLURM_JOB_RUN_TIME" | |
| showParamIfSet "Job stage-out time" "$SLURM_JOB_STAGE_OUT_TIME" | |
| showParamIfSet "Job state" "$SLURM_JOB_STATE" | |
| showParamIfSet "Job stderr" "$SLURM_JOB_STDERR" | |
| showParamIfSet "Job stdin" "$SLURM_JOB_STDIN" | |
| showParamIfSet "Job stdout" "$SLURM_JOB_STDOUT" | |
| showParamIfSet "Job uid" "$SLURM_JOB_UID" | |
| showParamIfSet "Job user name" "$SLURM_JOB_USER" | |
| showParamIfSet "Job wckey" "$SLURM_JOB_WCKEY" | |
| showParamIfSet "Job working directory" "$SLURM_JOB_WORK_DIR" | |
| showParamIfSet "Mail type" "$SLURM_MAIL_TYPE" | |
| /usr/bin/mail "$@" < $MAIL_BODY | |
| rm $MAIL_BODY |