# PBS to Slurm Migration

Quick reference for users migrating from the old PBS/Torque system to Slurm.

## Command Equivalents

<table id="bkmrk-pbs%2Ftorque-slurm-des"><thead><tr><th>PBS/Torque</th><th>Slurm</th><th>Description</th></tr></thead><tbody><tr><td>`qsub job.sh`</td><td>`sbatch job.sh`</td><td>Submit a job</td></tr><tr><td>`qsub -I`</td><td>`srun --pty bash`</td><td>Interactive session</td></tr><tr><td>`qstat`</td><td>`squeue`</td><td>View jobs</td></tr><tr><td>`qstat -u username`</td><td>`squeue -u username`</td><td>Your jobs</td></tr><tr><td>`qdel JOBID`</td><td>`scancel JOBID`</td><td>Cancel a job</td></tr><tr><td>`pbsnodes`</td><td>`sinfo`</td><td>Node status</td></tr><tr><td>`qstat -f JOBID`</td><td>`scontrol show job JOBID`</td><td>Job details</td></tr></tbody></table>

## Directive Equivalents

<table id="bkmrk-pbs%2Ftorque-slurm-des-1"><thead><tr><th>PBS/Torque</th><th>Slurm</th><th>Description</th></tr></thead><tbody><tr><td>`#PBS -N name`</td><td>`#SBATCH --job-name=name`</td><td>Job name</td></tr><tr><td>`#PBS -q queue`</td><td>`#SBATCH --partition=partition`</td><td>Queue/partition</td></tr><tr><td>`#PBS -l nodes=1:ppn=8`</td><td>`#SBATCH --nodes=1 --cpus-per-task=8`</td><td>Nodes and cores</td></tr><tr><td>`#PBS -l mem=4gb`</td><td>`#SBATCH --mem=4G`</td><td>Memory</td></tr><tr><td>`#PBS -l walltime=02:00:00`</td><td>`#SBATCH --time=02:00:00`</td><td>Wall time</td></tr><tr><td>`#PBS -o output.log`</td><td>`#SBATCH --output=output.log`</td><td>Output file</td></tr><tr><td>`#PBS -e error.log`</td><td>`#SBATCH --error=error.log`</td><td>Error file</td></tr><tr><td>`#PBS -M email`</td><td>`#SBATCH --mail-user=email`</td><td>Email</td></tr><tr><td>`#PBS -m abe`</td><td>`#SBATCH --mail-type=ALL`</td><td>Mail events</td></tr><tr><td>`#PBS -V`</td><td>`#SBATCH --export=ALL`</td><td>Export environment</td></tr><tr><td>`#PBS -t 1-10`</td><td>`#SBATCH --array=1-10`</td><td>Job array</td></tr></tbody></table>

## Environment Variables

<table id="bkmrk-pbs%2Ftorque-slurm-des-2"><thead><tr><th>PBS/Torque</th><th>Slurm</th><th>Description</th></tr></thead><tbody><tr><td>`$PBS_JOBID`</td><td>`$SLURM_JOB_ID`</td><td>Job ID</td></tr><tr><td>`$PBS_JOBNAME`</td><td>`$SLURM_JOB_NAME`</td><td>Job name</td></tr><tr><td>`$PBS_NODEFILE`</td><td>`$SLURM_JOB_NODELIST`</td><td>Node list</td></tr><tr><td>`$PBS_ARRAYID`</td><td>`$SLURM_ARRAY_TASK_ID`</td><td>Array task ID</td></tr><tr><td>`$PBS_NP`</td><td>`$SLURM_NTASKS`</td><td>Number of tasks</td></tr><tr><td>`$PBS_O_WORKDIR`</td><td>`$SLURM_SUBMIT_DIR`</td><td>Submission directory</td></tr></tbody></table>

## Key Differences

- Slurm requires `--account` and `--qos` — run `check_my_partitions` to find yours
- Slurm uses `--cpus-per-task` instead of `ppn`
- Memory in Slurm is per-CPU (`--mem-per-cpu`) or total (`--mem`)
- Slurm does not automatically change to the submission directory — add `cd $SLURM_SUBMIT_DIR` to your script if needed