Write job scripts

You can build a job file one line at a time, or create it from another file, by running bsub without specifying a job to submit. When you do this, you start an interactive session in which bsub reads command lines from the standard input and submits them as a single batch job. You are prompted with bsub> for each line.

You can use the bsub -Zs command to spool a file.

For more details on bsub options, see the bsub(1) man page.

Write a job file one line at a time

UNIX example:

% bsub -q simulation 
bsub> cd /work/data/myhomedir bsub> myjob arg1 arg2 ...... 
bsub> rm myjob.log 
bsub> ^D
Job <1234> submitted to queue <simulation>.

In the previous example, the 3 command lines run as a Bourne shell (/bin/sh) script. Only valid Bourne shell command lines are acceptable in this case.

Windows example:

C:\> bsub -q simulation 
bsub> cd \\server\data\myhomedir 
bsub> myjob arg1 arg2 ...... 
bsub> del myjob.log 
bsub> ^Z
Job <1234> submitted to queue <simulation>.

In the previous example, the 3 command lines run as a batch file (.BAT). Note that only valid Windows batch file command lines are acceptable in this case.

Specify embedded submission options

You can specify job submission options in scripts read from standard input by the bsub command using lines starting with #BSUB:
% bsub -q simulation bsub> #BSUB -q test 
bsub> #BSUB -o outfile -R "mem>10" 
bsub> myjob arg1 arg2 
bsub> #BSUB -J simjob 
bsub> ^D
Job <1234> submitted to queue <simulation>.
Note:
  • Command-line options override embedded options. In this example, the job is submitted to the simulation queue rather than the test queue.
  • Submission options can be specified anywhere in the standard input. In the above example, the -J option of bsub is specified after the command to be run.
  • More than one option can be specified on one line, as shown in the previous example.

Specify job options in a file

In this example, options to run the job are specified in the options_file.
% bsub -q simulation < options_file
Job <1234> submitted to queue <simulation>.

On UNIX, the options_file must be a text file that contains Bourne shell command lines. It cannot be a binary executable file.

On Windows, the options_file must be a text file containing Windows batch file command lines.

Spool a job command file

Use bsub -Zs to spool a job command file to the directory specified by the JOB_SPOOL_DIR parameter in lsb.params, and use the spooled file as the command file for the job.

Use the bmod -Zsn command to modify or remove the command file after the job has been submitted. Removing or modifying the original input file does not affect the submitted job.

Redirect a script to bsub standard input

You can redirect a script to the standard input of the bsub command:
% bsub < myscript
Job <1234> submitted to queue <test>.

In this example, the myscript file contains job submission options as well as command lines to execute. When the bsub command reads a script from its standard input, it can be modified right after bsub returns for the next job submission.

When the script is specified on the bsub command line, the script is not spooled:
% bsub myscript
Job <1234> submitted to default queue <normal>.

In this case the command line myscript is spooled, instead of the contents of the myscript file. Later modifications to the myscript file can affect job behavior.

Load and run a job script file

If the LSB_BSUB_PARSE_SCRIPT parameter is set to Y in the lsf.conf file, you can use the bsub command to load, parse, and run job script files directly from the command line. Submit a job with the job script as a command. The job script must be an ASCII text file and not a binary file.

In this example, the myscript file contains job submission options as well as command lines to execute. Use the #BSUB imperative at the beginning of each line to specify embedded job submission options in the script.

When the script is specified in the bsub command line, the bsub command loads and parses the job script, then runs the script as the job itself:
% bsub myscript
Job <1234> submitted to default queue <normal>.

Run a job under a particular shell

By default, LSF runs batch jobs using the Bourne (/bin/sh) shell. You can specify the shell under which a job is to run. This is done by specifying an interpreter in the first line of the script.

For example:
% bsub 
bsub> #!/bin/csh -f 
bsub> set coredump=‘ls |grep core‘ 
bsub> if ( "$coredump" != "") then 
bsub> mv core core.‘date | cut -d" " -f1‘ 
bsub> endif 
bsub> myjob 
bsub> ^D
Job <1234> is submitted to default queue <normal>.

The bsub command must read the job script from standard input to set the execution shell. If you do not specify a shell in the script, the script is run using /bin/sh. If the first line of the script starts with a # not immediately followed by an exclamation mark (!), then /bin/csh is used to run the job.

For example:
% bsub 
bsub> # This is a comment line. This tells the system to use /bin/csh to 
bsub> # interpret the script. 
bsub> 
bsub> setenv DAY ‘date | cut -d" " -f1‘ 
bsub> myjob bsub> ^D
Job <1234> is submitted to default queue <normal>.

If running jobs under a particular shell is required frequently, you can specify an alternate shell using a command-level job starter and run your jobs interactively.