引言
下面介绍一下如何在SLURM任务脚本中集成微信推送功能,实现任务执行完成(成功/失败)后,自动向微信发送通知。该功能适用于VASP、LAMMPS、GROMACS等各类集群计算程序,可实时反馈任务执行状态,无需手动查询任务日志
操作步骤
关注服务号
首先打开网站:https://cx.super4.cn/
点击立即登录,使用移动端微信扫描二维码,在弹出的界面中点击关注服务号

点击右上角人像,进入服务号资料页面

再点击右上角三个点,选择置顶服务号

完成设置后,返回网站,网站中会显示一行appKEY,复制这个内容备用

修改SLURM提交脚本
将下面的内容复制到提交作业的SLURM脚本的最后部分
### 请在此处填写你的appkey,替换掉双引号内的内容
APP_KEY="your_appkey_here"
JOB_EXIT_CODE=$?
JOB_ID=$SLURM_JOB_ID
JOB_NAME=$SLURM_JOB_NAME
WORK_DIR=$SLURM_SUBMIT_DIR
if [ $JOB_EXIT_CODE -eq 0 ]; then
MSG_TITLE="任务完成通知"
MSG_CONTENT="任务ID:${JOB_ID} 名称:${JOB_NAME} 目录:${WORK_DIR} 状态:成功完成"
else
MSG_TITLE="任务失败通知"
MSG_CONTENT="任务ID:${JOB_ID} 名称:${JOB_NAME} 目录:${WORK_DIR} 状态:失败 退出码:${JOB_EXIT_CODE}"
fi
curl -s -G \
--data-urlencode "appkey=${APP_KEY}" \
--data-urlencode "title=${MSG_TITLE}" \
--data-urlencode "content=${MSG_CONTENT}" \
"https://cx.super4.cn/push_msg"
SLURM脚本示例(以彩虹一号集群运行VASP为例)
#!/bin/bash
#SBATCH -o %j.out
#SBATCH -J job_name
#SBATCH -p GPU
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --gres=gpu:1
dos2unix ./POSCAR ./INCAR ./KPOINTS ./POTCAR
source /public/toolkit/intel/oneapi_2023/mkl/latest/env/vars.sh
module load /public/toolkit/nvidia/hpc_sdk/modulefiles/nvhpc/25.3
export NO_STOP_MESSAGE=1
export OMP_NUM_THREADS=1
export vasp_path=/public/software/vasp/GPU/vasp.6.5.1/vasp_std
mpirun -np $SLURM_NTASKS --bind-to none $vasp_path
### 请在此处填写你的appkey,替换掉双引号内的内容
APP_KEY="your_appkey_here"
JOB_EXIT_CODE=$?
JOB_ID=$SLURM_JOB_ID
JOB_NAME=$SLURM_JOB_NAME
WORK_DIR=$SLURM_SUBMIT_DIR
if [ $JOB_EXIT_CODE -eq 0 ]; then
MSG_TITLE="任务完成通知"
MSG_CONTENT="任务ID:${JOB_ID} 名称:${JOB_NAME} 目录:${WORK_DIR} 状态:成功完成"
else
MSG_TITLE="任务失败通知"
MSG_CONTENT="任务ID:${JOB_ID} 名称:${JOB_NAME} 目录:${WORK_DIR} 状态:失败 退出码:${JOB_EXIT_CODE}"
fi
curl -s -G \
--data-urlencode "appkey=${APP_KEY}" \
--data-urlencode "title=${MSG_TITLE}" \
--data-urlencode "content=${MSG_CONTENT}" \
"https://cx.super4.cn/push_msg"
简易版SLURM提交脚本
有朋友反馈复制代码非常不方便,而且代码太长看着不够“清爽”,因此我们将推送通知的代码转移到了集群的脚本中,直接调用脚本即可完成推送
将下面的内容复制到提交作业的SLURM脚本的最后部分
export JOB_EXIT_CODE=$?
### 请在下方填写你的appkey,替换掉等号后面的内容
export APP_KEY=your_appkey_here
/public/slurm_scripts/job_notify.sh
SLURM脚本示例(以彩虹一号集群运行VASP为例)
#!/bin/bash
#SBATCH -o %j.out
#SBATCH -J job_name
#SBATCH -p GPU
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --gres=gpu:1
dos2unix ./POSCAR ./INCAR ./KPOINTS ./POTCAR
source /public/toolkit/intel/oneapi_2023/mkl/latest/env/vars.sh
module load /public/toolkit/nvidia/hpc_sdk/modulefiles/nvhpc/25.3
export NO_STOP_MESSAGE=1
export OMP_NUM_THREADS=1
export vasp_path=/public/software/vasp/GPU/vasp.6.5.1/vasp_std
mpirun -np $SLURM_NTASKS --bind-to none $vasp_path
export JOB_EXIT_CODE=$?
### 请在下方填写你的appkey,替换掉等号后面的内容
export APP_KEY=your_appkey_here
/public/slurm_scripts/job_notify.sh
