Home > other >  Add exception to slurm array
Add exception to slurm array

Time:01-10

I have the following slurm script:

#!/bin/bash

#SBATCH -A XXX-CPU
#SBATCH --mail-type=BEGIN,END,FAIL
#SBATCH -p cclake
#SBATCH -D analyses/
#SBATCH -c 12
#SBATCH -t 01:00:00
#SBATCH --mem=10G
#SBATCH -J splitBAM
#SBATCH -a 1-12
#SBATCH -o analyses/splitBAM_%a.log

sed -n ${SLURM_ARRAY_TASK_ID}p analyses/slurm/commands1.csv | bash
sed -n ${SLURM_ARRAY_TASK_ID}p analyses/slurm/commands2.csv | bash
sed -n ${SLURM_ARRAY_TASK_ID}p analyses/slurm/commands3.csv | bash

Normally I would run another slurm script with a single bash command to remove some files with the option #SBATCH --dependency=afterok:job_id(first job).
What I want to do is include this in the above script, but when I add the line rm file1 file2 file3 it will obviously do this for each job in the array, but I only want to run the command once after all the jobs in the array have finished.
Is there a way to mark this command so that is not part of the array? This would allow me to do all the things with one script instead of two.

CodePudding user response:

There is not specific Slurm syntax to do that, but you can add an if statement at the end of the script, looking for are any other jobs from that array.

if [[ $(squeue  -h -j $SLURM_JOB_ID  | wc -l) == 1 ]] ; then
rm file1 file2 file3
fi

If there is no other job running from that job array, then delete the files.

  • Related