Using PBS Variables
Many PBS jobs are very similar to each other, differing from previous jobs only by one or two parameters, like input filename. PBS allows scripts to use input parameters so scripts don’t have to be rewritten for every job.
An example job that demonstrates this is available on Maple at /usr/local/apps/example_jobs/pbs_variable_example
The main file is variable_example.pbs
:
#PBS -N variable
#PBS -l mem=2gb
#PBS -l ncpus=1
cd $PBS_O_WORKDIR
echo "Input file: $INPUT_FILE"
# Run program here
ls -l $INPUT_FILE
The variable in this example is called INPUT_FILE
. First, the script changes to the directory from which the script was submitted. Then it echos the value of the variable passed into the script. Finally, it runs a program on the input file, in this case, just ls
.
This PBS script can be submitted by running:
qsub -v INPUT_FILE=file.csv variable_example.pbs
Starting multiple jobs at once
With some shell scripting, multiple jobs can be started at once. For instance, assume you had multiple CSV files that all needed to be processed by the same program. You could submit a separate for for each one by running:
for file in *.csv
do
qsub -vINPUT_FILE=$file variable_example.pbs
done
This code is included as launch_jobs.sh
in the example job on Maple.