Provided by: htcondor_8.0.5~dfsg.1-1ubuntu1_amd64 bug

Name

       condor_submit Queue - jobs for execution under HTCondor

Synopsis

       condor_submit  [-verbose]  [-unused]  [-name  schedd_name]  [-remote  schedd_name]  [-addr
       <ip:port>] [-pool pool_name] [-disable] [-password passphrase] [-debug] [-appendcommand...
       ] [-spool] [-dump filename] [-interactive] [submit description file]

Description

       condor_submitis   the   program   for   submitting  jobs  for  execution  under  HTCondor.
       condor_submitrequires a submit description file which  contains  commands  to  direct  the
       queuing of jobs. One submit description file may contain specifications for the queuing of
       many HTCondor jobs at once. A single invocation of  condor_submitmay  cause  one  or  more
       clusters.  A  cluster  is  a  set of jobs specified in the submit description file between
       queuecommands for which the executable is  not  changed.  It  is  advantageous  to  submit
       multiple jobs as a single cluster because:

          *  Only  one  copy  of the checkpoint file is needed to represent all jobs in a cluster
          until they begin execution.

          * There is much less overhead involved for HTCondor to start the next job in a  cluster
          than  for  HTCondor  to  start  a  new  cluster.  This  can  make a big difference when
          submitting lots of short jobs.

       Multiple clusters may be specified within a single submit description file.  Each  cluster
       must specify a single executable.

       The job ClassAd attribute  ClusterId identifies a cluster.

       Note  that  submission of jobs from a Windows machine requires a stashed password to allow
       HTCondor to impersonate the user  submitting  the  job.  To  stash  a  password,  use  the
       condor_store_credcommand. See the manual page for details.

       For  lengthy  lines  within  the  submit  description  file,  the  backslash  () is a line
       continuation character. Placing the backslash at the end of  a  line  causes  the  current
       line's  command  to  be continued with the next line of the file. Submit description files
       may contain comments. A comment is any line beginning with a pound character ( # ).

Options

       -verbose

          Verbose output - display the created job ClassAd

       -unused

          As a default, causes no warnings to be issued about user-defined macros not being  used
          within   the   submit  description  file.  The  meaning  reverses  (toggles)  when  the
          configuration variable  WARN_ON_UNUSED_SUBMIT_FILE_MACROS is set  to  the  non  default
          value  of   False  .  Printing the warnings can help identify spelling errors of submit
          description file commands. The warnings are sent to stderr.

       -name schedd_name

          Submit  to  the  specified  condor_schedd.   Use   this   option   to   submit   to   a
          condor_scheddother  than  the  default  local one. schedd_nameis the value of the  Name
          ClassAd attribute on the machine where the condor_schedddaemon runs.

       -remote schedd_name

          Submit to the specified condor_schedd, spooling  all  required  input  files  over  the
          network  connection.  schedd_nameis  the  value  of  the  Name ClassAd attribute on the
          machine where the condor_schedddaemon runs. This option is  equivalent  to  using  both
          -nameand -spool.

       -addr <ip:port>

          Submit   to   the  condor_scheddat  the  IP  address  and  port  given  by  the  sinful
          stringargument <ip:port>.

       -pool pool_name

          Look in the specified pool for the condor_scheddto submit to. This option is used  with
          -nameor -remote.

       -disable

          Disable  file permission checks when submitting a job for read permissions on all input
          files, such as those defined by commands  inputand  transfer_input_files,  as  well  as
          write  permission  to  output  files, such as a log file defined by logand output files
          defined with outputor transfer_output_files.

       -password passphrase

          Specify a password to the MyProxyserver.

       -debug

          Cause debugging information to be  sent  to   stderr  ,  based  on  the  value  of  the
          configuration variable  TOOL_DEBUG .

       -append command

          Augment  the  commands  in  the  submit  description  file with the given command. This
          command will be considered to immediately precede the Queue command within  the  submit
          description  file,  and  come after all other previous commands. The submit description
          file is not modified. Multiple  commands  are  specified  by  using  the  -appendoption
          multiple  times.  Each  new command is given in a separate -appendoption. Commands with
          spaces in them will need to be enclosed in double quote marks.

       -spool

          Spool all required input files, job event log, and proxy over  the  connection  to  the
          condor_schedd.  After  submission,  modify  local copies of the files without affecting
          your  jobs.  Any  output  files  for  completed  jobs  need  to   be   retrieved   with
          condor_transfer_data.

       -dump filename

          Sends all ClassAds to the specified file, instead of to the condor_schedd.

       -interactive

          Indicates  that the user wants to run an interactive shell on an execute machine in the
          pool. This is equivalent to creating a submit description file of  a  vanilla  universe
          sleep job, and then running condor_ssh_to_jobby hand. Without any additional arguments,
          condor_submit with the -interactive flag creates a  dummy  vanilla  universe  job  that
          sleeps,  submits it to the local scheduler, waits for the job to run, and then launches
          condor_ssh_to_jobto run a shell. If the user would like to run the shell on  a  machine
          that  matches  a  particular  requirementsexpression,  the  submit  description file is
          specified, and it will  contain  the  expression.  Note  that  all  policy  expressions
          specified   in   the   submit  description  file  are  honored,  but  any  executableor
          universecommands are overwritten to be sleep and vanilla.  The  job  ClassAd  attribute
          InteractiveJob  is  set  to   True to identify interactive jobs for condor_startdpolicy
          usage.

       submit description file

          The path and file name of the submit description file. If  this  optional  argument  is
          missing  or  is  the  dash  character  ( - ), then the commands are taken from standard
          input.

Submit Description File Commands

       Each submit description file describes one cluster of jobs to be placed  in  the  HTCondor
       execution  pool.  All  jobs in a cluster must share the same executable, but they may have
       different input and output files, and different program arguments. The submit  description
       file  is  the only command-line argument to condor_submit . If the submit description file
       argument is omitted, condor_submit will read the submit description from standard input.

       The  submit  description  file  must  contain  one  executablecommand  and  at  least  one
       queuecommand. All of the other commands have default actions.

       The commands which can appear in the submit description file are numerous. They are listed
       here in alphabetical order by category.

       BASIC COMMANDS

       arguments = <argument_list>

          List of arguments to be supplied to the executable as part of the command line.

          In the javauniverse, the first argument must be the name of the class containing   main
          .

          There  are  two  permissible  formats  for  specifying arguments, identified as the old
          syntax and the new syntax. The  old  syntax  supports  white  space  characters  within
          arguments  only  in  special  circumstances;  when used, the command line arguments are
          represented in the job ClassAd attribute   Args  .  The  new  syntax  supports  uniform
          quoting  of  white  space  characters  within  arguments;  when  used, the command line
          arguments are represented in the job ClassAd attribute  Arguments .

          Old Syntax

          In the old syntax, individual command line arguments are delimited (separated) by space
          characters.  To  allow  a  double  quote  mark  in  an  argument,  it is escaped with a
          backslash; that is, the two character sequence  \" becomes a single double  quote  mark
          within an argument.

          Further  interpretation  of  the  argument  string  differs  depending on the operating
          system. On Windows, the entire argument string  is  passed  verbatim  (other  than  the
          backslash  in  front  of  double  quote marks) to the Windows application. Most Windows
          applications will allow spaces within an argument value  by  surrounding  the  argument
          with double quotes marks. In all other cases, there is no further interpretation of the
          arguments.

          Example:

       arguments = one \"two\" 'three'

          Produces in Unix vanilla universe:

       argument 1: one
       argument 2: "two"
       argument 3: 'three'

          New Syntax

          Here are the rules for using the new syntax:

             1. The entire string representing the command line arguments is surrounded by double
             quote  marks.  This  permits  the  white  space  characters  of  spaces  and tabs to
             potentially be embedded within a single argument.  Putting  the  double  quote  mark
             within the arguments is accomplished by escaping it with another double quote mark.

             2. The white space characters of spaces or tabs delimit arguments.

             3.  To  embed  white  space  characters  of spaces or tabs within a single argument,
             surround the entire argument with single quote marks.

             4. To insert a literal single quote mark,  escape  it  within  an  argument  already
             delimited by single quote marks by adding another single quote mark.

          Example:

       arguments = "3 simple arguments"

          Produces:

       argument 1: 3
       argument 2: simple
       argument 3: arguments

          Another example:

       arguments = "one 'two with spaces' 3"

          Produces:

       argument 1: one
       argument 2: two with spaces
       argument 3: 3

          And yet another example:

       arguments = "one ""two"" 'spacey ''quoted'' argument'"

          Produces:

       argument 1: one
       argument 2: "two"
       argument 3: spacey 'quoted' argument

          Notice  that  in  the new syntax, the backslash has no special meaning. This is for the
          convenience of Windows users.

       environment = <parameter_list>

          List of environment variables.

          There are two different formats for  specifying  the  environment  variables:  the  old
          format  and  the  new format. The old format is retained for backward-compatibility. It
          suffers from a platform-dependent syntax and  the  inability  to  insert  some  special
          characters into the environment.

          The new syntax for specifying environment values:

             1.  Put double quote marks around the entire argument string. This distinguishes the
             new syntax from the old. The old syntax does not have double quote marks around  it.
             Any  literal  double  quote marks within the string must be escaped by repeating the
             double quote mark.

             2. Each environment entry has the form

       <name>=<value>

             3. Use white space (space or tab characters) to separate environment entries.

             4. To put any white space in an environment entry, surround the space and as much of
             the surrounding entry as desired with single quote marks.

             5.  To  insert  a  literal  single quote mark, repeat the single quote mark anywhere
             inside of a section surrounded by single quote marks.

          Example:

       environment = "one=1 two=""2"" three='spacey ''quoted'' value'"

          Produces the following environment entries:

       one=1
       two="2"
       three=spacey 'quoted' value

          Under the old syntax, there are no  double  quote  marks  surrounding  the  environment
          specification. Each environment entry remains of the form

       <name>=<value>

          Under  Unix, list multiple environment entries by separating them with a semicolon (;).
          Under Windows, separate multiple entries with a vertical bar (| ). There is no  way  to
          insert  a  literal  semicolon  under Unix or a literal vertical bar under Windows. Note
          that spaces are accepted, but rarely desired, characters  within  parameter  names  and
          values, because they are treated as literal characters, not separators or ignored white
          space. Place spaces within the parameter list only if required.

          A Unix example:

       environment = one=1;two=2;three="quotes have no 'special' meaning"

          This produces the following:

       one=1
       two=2
       three="quotes have no 'special' meaning"

          If the environment is set with the environmentcommand andgetenvis  also  set  to  true,
          values  specified  with  environmentoverride  values  in  the  submitter's  environment
          (regardless of the order of the environmentand getenvcommands).

       error = <pathname>

          A path and file name used by HTCondor to capture any error messages the  program  would
          normally  write  to  the  screen (that is, this file becomes  stderr ). A path is given
          with respect to the file system of the machine on which the job is submitted. The  file
          is written (by the job) in the remote scratch directory of the machine where the job is
          executed. When the job exits, the resulting file is transferred  back  to  the  machine
          where  the  job  was  submitted,  and  the  path is utilized for file placement. If not
          specified, the default value of  /dev/null is used for submission to a Unix machine. If
          not  specified,  error  messages  are ignored for submission to a Windows machine. More
          than one job should not use the same error file, since  this  will  cause  one  job  to
          overwrite  the  errors of another. The error file and the output file should not be the
          same file as the outputs will overwrite each other or be lost. For grid universe  jobs,
          errormay be a URL that the Globus tool globus_url_copyunderstands.

       executable = <pathname>

          An  optional path and a required file name of the executable file for this job cluster.
          Only one executablecommand within a submit  description  file  is  guaranteed  to  work
          properly. More than one often works.

          If  no  path  or  a  relative  path is used, then the executable file is presumed to be
          relative to the current working directory of the user as the condor_submit  command  is
          issued.

          If  submitting into the standard universe, then the named executable must have been re-
          linked with  the  HTCondor  libraries  (such  as  via  the  condor_compilecommand).  If
          submitting  into the vanilla universe (the default), then the named executable need not
          be re-linked and can be any process which can run in the background (shell scripts work
          fine  as  well).  If  submitting  into  the  Java universe, then the argument must be a
          compiled  .class file.

       getenv = <True | False>

          If getenvis set to  True , then condor_submit will copy all of the user's current shell
          environment  variables at the time of job submission into the job ClassAd. The job will
          therefore execute with the same set of environment  variables  that  the  user  had  at
          submit time. Defaults to  False .

          If  the  environment  is  set with the environmentcommand andgetenvis also set to true,
          values  specified  with  environmentoverride  values  in  the  submitter's  environment
          (regardless of the order of the environmentand getenvcommands).

       input = <pathname>

          HTCondor assumes that its jobs are long-running, and that the user will not wait at the
          terminal for their completion. Because of  this,  the  standard  files  which  normally
          access  the terminal, ( stdin ,  stdout , and  stderr ), must refer to files. Thus, the
          file name specified with inputshould contain any keyboard input  the  program  requires
          (that  is,  this file becomes  stdin ). A path is given with respect to the file system
          of the machine on which the job is submitted. The file is transferred before  execution
          to  the  remote  scratch  directory  of  the  machine where the job is executed. If not
          specified, the default value of  /dev/null is used for submission to a Unix machine. If
          not  specified, input is ignored for submission to a Windows machine. For grid universe
          jobs, inputmay be a URL that the Globus tool globus_url_copyunderstands.

          Note that this command does notrefer to the command-line arguments of the program.  The
          command-line arguments are specified by the argumentscommand.

       log = <pathname>

          Use logto specify a file name where HTCondor will write a log file of what is happening
          with this job cluster, called a job event log. For example, HTCondor will place  a  log
          entry  into  this  file  when and where the job begins running, when the job produces a
          checkpoint, or moves (migrates) to another machine, and when the  job  completes.  Most
          users  find specifying a logfile to be handy; its use is recommended. If no logentry is
          specified, HTCondor does not create a log for this cluster.

       log_xml = <True | False>

          If log_xmlis  True , then the job event log file will be written in ClassAd XML. If not
          specified,  XML  is  not used. Note that the file is an XML fragment; it is missing the
          file header and footer. Do not mix XML and non-XML within a single  file.  If  multiple
          jobs  write  to  a  single job event log file, ensure that all of the jobs specify this
          option in the same way.

       notification = <Always | Complete | Error | Never>

          Owners of HTCondor jobs are notified by e-mail when certain events occur. If defined by
          Always,  the  owner will be notified whenever the job produces a checkpoint, as well as
          when the job completes. If defined by Complete, the owner will be notified when the job
          terminates.  If defined by Error, the owner will only be notified if the job terminates
          abnormally, or if the job is placed on hold because of  a  failure,  and  not  by  user
          request.  If  defined  by  Never(the  default),  the  owner  will  not  receive e-mail,
          regardless to what happens to the job. The HTCondor User's manual documents  statistics
          included in the e-mail.

       notify_user = <email-address>

          Used  to  specify  the e-mail address to use when HTCondor sends e-mail about a job. If
          not specified, HTCondor defaults to using the e-mail address defined by

       job-owner@UID_DOMAIN

          where the  configuration  variable   UID_DOMAIN  is  specified  by  the  HTCondor  site
          administrator. If  UID_DOMAIN has not been specified, HTCondor sends the e-mail to:

       job-owner@submit-machine-name

       output = <pathname>

          The  outputfile  captures  any  information  the  program would ordinarily write to the
          screen (that is, this file becomes  stdout ). A path is given with respect to the  file
          system  of  the machine on which the job is submitted. The file is written (by the job)
          in the remote scratch directory of the machine where the job is executed. When the  job
          exits,  the  resulting  file  is  transferred  back  to  the  machine where the job was
          submitted, and the path is utilized for file placement. If not specified,  the  default
          value  of  /dev/null is used for submission to a Unix machine. If not specified, output
          is ignored for submission to a Windows machine. Multiple jobs should not use  the  same
          output  file,  since  this  will  cause one job to overwrite the output of another. The
          output file and the error file should  not  be  the  same  file  as  the  outputs  will
          overwrite  each  other  or be lost. For grid universe jobs, outputmay be a URL that the
          Globus tool globus_url_copyunderstands.

          Note that if a program explicitly opens and writes to a file, that  file  should  notbe
          specified as the outputfile.

       priority = <integer>

          An HTCondor job priority can be any integer, with 0 being the default. Jobs with higher
          numerical priority will run before jobs with lower numerical priority. Note  that  this
          priority  is on a per user basis. One user with many jobs may use this command to order
          his/her own jobs, and this will have no effect on whether or not these  jobs  will  run
          ahead of another user's jobs.

       queue [number-of-procs]

          Places  one  or  more  copies of the job into the HTCondor queue. The optional argument
          number-of-procsspecifies how many times to submit the job to the queue, and it defaults
          to  1. If desired, any commands may be placed between subsequent queuecommands, such as
          new input,  output,  error,  initialdir,  or  argumentscommands.  This  is  handy  when
          submitting multiple runs into one cluster with one submit description file.

       universe = <vanilla | standard | scheduler | local | grid | java | vm>

          Specifies  which  HTCondor universe to use when running this job. The HTCondor universe
          specifies an HTCondor execution environment.

          The  vanillauniverse  is  the  default  (except  where   the   configuration   variable
          DEFAULT_UNIVERSE  defines it otherwise), and is an execution environment for jobs which
          do not use HTCondor's mechanisms for taking checkpoints; these are ones that  have  not
          been  linked  with  the  HTCondor  libraries.  Use  the vanillauniverse to submit shell
          scripts to HTCondor.

          The  standarduniverse  tells  HTCondor  that  this   job   has   been   re-linked   via
          condor_compilewith the HTCondor libraries and therefore supports taking checkpoints and
          remote system calls.

          The scheduleruniverse is for a job that is to run on  the  machine  where  the  job  is
          submitted.  This  universe  is intended for a job that acts as a metascheduler and will
          not be preempted.

          The localuniverse is for a job that  is  to  run  on  the  machine  where  the  job  is
          submitted. This universe runs the job immediately and will not be preempt the job.

          The  griduniverse  forwards  the  job  to  an  external  job management system. Further
          specification of the griduniverse is done with the grid_resourcecommand.

          The javauniverse is for programs written to the Java Virtual Machine.

          The vmuniverse facilitates the execution of a virtual machine.

       COMMANDS FOR MATCHMAKING

       rank = <ClassAd Float Expression>

          A ClassAd Floating-Point expression that states how to rank machines which have already
          met  the  requirements  expression.  Essentially,  rank  expresses preference. A higher
          numeric value equals better rank. HTCondor will give  the  job  the  machine  with  the
          highest rank. For example,

              requirements = Memory > 60
              rank = Memory

          asks  HTCondor to find all available machines with more than 60 megabytes of memory and
          give to the job the machine with the most amount of memory. The HTCondor User's  Manual
          contains  complete  information on the syntax and available attributes that can be used
          in the ClassAd expression.

       request_cpus = <num-cpus>

          A requested number of CPUs (cores). If not specified, the number requested will  be  1.
          If specified, the expression

        && (RequestCpus <= Target.Cpus)

          is appended to the requirementsexpression for the job.

          For  pools  that enable dynamic condor_startdprovisioning, specifies the minimum number
          of CPUs requested for this job, resulting in a dynamic slot  being  created  with  this
          many cores.

       request_disk = <quantity>

          The  requested amount of disk space in Kbytes requested for this job. If not specified,
          it will be set to the job ClassAd attribute  DiskUsage . The expression

        && (RequestDisk <= Target.Disk)

          is appended to the requirementsexpression for the job.

          For pools that enable dynamic condor_startdprovisioning, a dynamic slot will be created
          with at least this much disk space.

          Characters  may be appended to a numerical value to indicate units.  K or  KB indicates
          Kbytes.  M or  MB indicates Mbytes.  G or  GB indicates Gbytes.   T  or   TB  indicates
          Tbytes.

       request_memory = <quantity>

          The  required  amount  of  memory  in  Mbytes  that  this  job needs to avoid excessive
          swapping. If not specified and the submit command vm_memoryis specified, then the value
          specified for vm_memorydefines request_memory. If neither request_memorynor vm_memoryis
          specified, the value is set by the configuration variable  JOB_DEFAULT_REQUESTMEMORY  .
          The  actual  amount of memory used by a job is represented by the job ClassAd attribute
          MemoryUsage .

          For pools that enable dynamic condor_startdprovisioning, a dynamic slot will be created
          with at least this much RAM.

          The expression

        && (RequestMemory <= Target.Memory)

          is appended to the requirementsexpression for the job.

          Characters  may be appended to a numerical value to indicate units.  K or  KB indicates
          Kbytes.  M or  MB indicates Mbytes.  G or  GB indicates Gbytes.   T  or   TB  indicates
          Tbytes.

       request_<name> = <quantity>

          The  required amount of the custom machine resource identified by  <name> that this job
          needs. The custom machine resource is defined in the machine's configuration.

       requirements = <ClassAd Boolean Expression>

          The requirements command is a boolean ClassAd expression which uses  C-like  operators.
          In  order  for  any  job  in  this cluster to run on a given machine, this requirements
          expression must evaluate to true on the given machine.

          For scheduler and local universe jobs, the requirements expression is evaluated against
          the   Scheduler  ClassAd  which  represents  the the condor_schedddaemon running on the
          submit machine, rather  than  a  remote  machine.  Like  all  commands  in  the  submit
          description  file,  if multiple requirements commands are present, all but the last one
          are  ignored.  By  default,  condor_submit  appends  the  following  clauses   to   the
          requirements expression:

             1.  Arch  and  OpSys  are  set equal to the Arch and OpSys of the submit machine. In
             other words: unless you request otherwise, HTCondor will give your job machines with
             the   same  architecture  and  operating  system  version  as  the  machine  running
             condor_submit .

             2. Cpus >=RequestCpus, if the job ClassAd attribute  RequestCpus is defined.

             3. Disk >=RequestDisk,  if  the  job  ClassAd  attribute   RequestDisk  is  defined.
             Otherwise,  Disk  >=DiskUsage  is  appended  to  the  requirements.  The   DiskUsage
             attribute is initialized to the size of the executable plus the size  of  any  files
             specified in a transfer_input_filescommand. It exists to ensure there is enough disk
             space on the target machine for HTCondor to copy over both the executable and needed
             input  files.  The   DiskUsage attribute represents the maximum amount of total disk
             space  required  by  the  job  in  kilobytes.  HTCondor  automatically  updates  the
             DiskUsage  attribute  approximately  every  20  minutes  while the job runs with the
             amount of space being used by the job on the execute machine.

             4. Memory >=RequestMemory, if the job ClassAd attribute  RequestMemory is defined.

             5. If Universe is set to Vanilla,  FileSystemDomain  is  set  equal  to  the  submit
             machine's  FileSystemDomain.  View  the requirements of a job which has already been
             submitted (along with everything else  about  the  job  ClassAd)  with  the  command
             condor_q  -l; see the command reference for condor_qon page . Also, see the HTCondor
             Users Manual for complete information on the syntax and  available  attributes  that
             can be used in the ClassAd expression.

       FILE TRANSFER COMMANDS

       dont_encrypt_input_files = <file1,file2,file... >

          A  comma  and/or  space  separated list of input files that are notto be encrypted when
          transferred with the file transfer mechanism. Specification of  files  in  this  manner
          overrides  configuration that would use encryption. Each input file must also be in the
          list given by transfer_input_files. When a path  to  an  input  file  or  directory  is
          specified,  this  specifies the path to the file on the submit side. A single wild card
          character ( * ) may be used in each file name.

       dont_encrypt_output_files = <file1,file2,file... >

          A comma and/or space separated list of output files that are notto  be  encrypted  when
          transferred  back  with  the  file  transfer  mechanism. Specification of files in this
          manner overrides configuration that would use encryption. The output file(s) must  also
          either  be  in  the  list  given  by  transfer_output_filesor  be  discovered and to be
          transferred back with the file transfer mechanism. When a path to  an  output  file  or
          directory  is  specified,  this  specifies  the path to the file on the execute side. A
          single wild card character ( * ) may be used in each file name.

       encrypt_input_files = <file1,file2,file... >

          A comma and/or space separated list of input  files  that  are  to  be  encrypted  when
          transferred  with  the  file  transfer mechanism. Specification of files in this manner
          overrides configuration that would notuse encryption. Each input file must also  be  in
          the  list  given  by transfer_input_files. When a path to an input file or directory is
          specified, this specifies the path to the file on the submit side. A single  wild  card
          character  (  * ) may be used in each file name. The method of encryption utilized will
          be as agreed upon in security negotiation; if that negotiation failed,  then  the  file
          transfer mechanism must also fail for files to be encrypted.

       encrypt_output_files = <file1,file2,file... >

          A  comma  and/or  space  separated  list  of output files that are to be encrypted when
          transferred back with the file transfer  mechanism.  Specification  of  files  in  this
          manner  overrides  configuration  that would notuse encryption. The output file(s) must
          also either be in the list given by transfer_output_filesor be  discovered  and  to  be
          transferred  back  with  the  file transfer mechanism. When a path to an output file or
          directory is specified, this specifies the path to the file  on  the  execute  side.  A
          single  wild  card  character  (  *  )  may  be  used  in each file name. The method of
          encryption utilized will be as agreed upon in security negotiation; if that negotiation
          failed, then the file transfer mechanism must also fail for files to be encrypted.

       max_transfer_input_mb = <ClassAd Integer Expression>

          This integer expression specifies the maximum allowed total size in Mbytes of the input
          files that are transferred for a job. This expression does notapply to  grid  universe,
          standard  universe, or files transferred via file transfer plug-ins. The expression may
          refer to attributes of the job. The  special  value  -1  indicates  no  limit.  If  not
          defined, the value set by configuration variable  MAX_TRANSFER_INPUT_MB is used. If the
          observed size of all input files at submit time is larger than the limit, the job  will
          be  immediately  placed  on  hold with a  HoldReasonCode value of 32. If the job passes
          this initial test, but the size of the input files increases or the limit decreases  so
          that  the  limit  is violated, the job will be placed on hold at the time when the file
          transfer is attempted.

       max_transfer_output_mb = <ClassAd Integer Expression>

          This integer expression specifies the maximum allowed  total  size  in  Mbytes  of  the
          output  files  that  are  transferred  for a job. This expression does notapply to grid
          universe, standard universe, or files  transferred  via  file  transfer  plug-ins.  The
          expression may refer to attributes of the job. The special value -1 indicates no limit.
          If not set, the value set by configuration variable  MAX_TRANSFER_OUTPUT_MB is used. If
          the  total  size  of the job's output files to be transferred is larger than the limit,
          the job will be placed on hold with a  HoldReasonCode value of 33. The output  will  be
          transferred  up  to  the  point  when  the  limit  is  hit,  so some files may be fully
          transferred, some partially, and some not at all.

       output_destination = <destination-URL>

          When present, defines a URL that specifies both a plug-in and  a  destination  for  the
          transfer  of  the entire output sandbox or a subset of output files as specified by the
          submit command transfer_output_files. The plug-in does the transfer of  files,  and  no
          files are sent back to the submit machine. The HTCondor Administrator's manual has full
          details.

       should_transfer_files = <YES | NO | IF_NEEDED >

          The should_transfer_filessetting is used to define if HTCondor should transfer files to
          and  from the remote machine where the job runs. The file transfer mechanism is used to
          run jobs which are not in the standard universe (and can therefore  use  remote  system
          calls  for  file  access)  on  machines which do not have a shared file system with the
          submit machine. should_transfer_filesequal to YESwill cause HTCondor to always transfer
          files  for  the  job.  NOdisables HTCondor's file transfer mechanism. IF_NEEDEDwill not
          transfer  files  for  the  job  if  it  is  matched  with  a  resource  in   the   same
          FileSystemDomain  as  the  submit  machine  (and  therefore, on a machine with the same
          shared file system). If the job is matched  with  a  remote  resource  in  a  different
          FileSystemDomain , HTCondor will transfer the necessary files.

          For  more  information about this and other settings related to transferring files, see
          the HTCondor User's manual section on the file transfer mechanism.

          Note that  should_transfer_filesis  not  supported  for  jobs  submitted  to  the  grid
          universe.

       skip_filechecks = <True | False>

          When   True  , file permission checks for the submitted job are disabled. When  False ,
          file permissions are checked; this is the behavior when this command is not present  in
          the  submit  description file. File permissions are checked for read permissions on all
          input files, such as those defined by commands inputand transfer_input_files,  and  for
          write  permission  to  output  files, such as a log file defined by logand output files
          defined with outputor transfer_output_files.

       stream_error = <True | False>

          If  True , then  stderr is streamed  back  to  the  machine  from  which  the  job  was
          submitted.  If   False  ,   stderr  is stored locally and transferred back when the job
          completes. This command is ignored if the job ClassAd attribute  TransferErr is   False
          .  The  default  value is  False . This command must be used in conjunction with error,
          otherwise  stderr will sent to  /dev/null on  Unix  machines  and  ignored  on  Windows
          machines.

       stream_input = <True | False>

          If  True , then  stdin is streamed from the machine on which the job was submitted. The
          default value is  False . The command is  only  relevant  for  jobs  submitted  to  the
          vanilla or java universes, and it is ignored by the grid universe. This command must be
          used in conjunction with input, otherwise  stdin will be  /dev/null  on  Unix  machines
          and ignored on Windows machines.

       stream_output = <True | False>

          If   True  ,  then   stdout  is  streamed  back  to  the machine from which the job was
          submitted. If  False ,  stdout is stored locally and  transferred  back  when  the  job
          completes.  This command is ignored if the job ClassAd attribute  TransferOut is  False
          . The default value is  False . This command must be used in conjunction  with  output,
          otherwise   stdout  will  sent  to   /dev/null  on Unix machines and ignored on Windows
          machines.

       transfer_executable = <True | False>

          This command is applicable to jobs submitted to the  grid  and  vanilla  universes.  If
          transfer_executableis  set  to   False  , then HTCondor looks for the executable on the
          remote machine, and does not transfer the  executable  over.  This  is  useful  for  an
          already  pre-staged  executable;  HTCondor  behaves more like rsh. The default value is
          True .

       transfer_input_files = <file1,file2,file... >

          A comma-delimited list of all the files and directories  to  be  transferred  into  the
          working  directory  for  the  job,  before  the  job  is  started. By default, the file
          specified in the executablecommand and any file  specified  in  the  inputcommand  (for
          example,  stdin ) are transferred.

          When  a path to an input file or directory is specified, this specifies the path to the
          file on the submit side. The file is placed in the job's temporary scratch directory on
          the  execute  side,  and  it  is  named  using  the base name of the original path. For
          example,  /path/to/input_file becomes  input_file in the job's scratch directory.

          A directory may be specified using a trailing path separator. An example of a  trailing
          path  separator  is  the slash character on Unix platforms; a directory example using a
          trailing path separator is  input_data/ . When a directory is specified with a trailing
          path separator, the contents of the directory are transferred, but the directory itself
          is not transferred. It is as if each of the items within the directory were  listed  in
          the  transfer  list.  When  there  is  no  trailing  path  separator,  the directory is
          transferred, its contents are transferred, and these contents  are  placed  inside  the
          transferred directory.

          For  grid  universe  jobs  other  than  HTCondor-C,  the transfer of directories is not
          currently supported.

          Symbolic links to files are transferred  as  the  files  they  point  to.  Transfer  of
          symbolic links to directories is not currently supported.

          For vanilla and vm universe jobs only, a file may be specified by giving a URL, instead
          of a file name. The implementation for URL transfers requires  both  configuration  and
          available plug-in.

       transfer_output_files = <file1,file2,file... >

          This  command  forms an explicit list of output files and directories to be transferred
          back from the temporary working directory on the execute machine to the submit machine.
          If there are multiple files, they must be delimited with commas.

          For  HTCondor-C  jobs  and all other non-grid universe jobs, if transfer_output_filesis
          not specified, HTCondor will  automatically  transfer  back  all  files  in  the  job's
          temporary   working  directory  which  have  been  modified  or  created  by  the  job.
          Subdirectories are not scanned for output, so if output from subdirectories is desired,
          the  output  list  must  be  explicitly  specified.  For  grid universe jobs other than
          HTCondor-C, desired output files must also be  explicitly  listed.  Another  reason  to
          explicitly  list  output files is for a job that creates many files, and the user wants
          only a subset transferred back.

          For grid universe jobs other than with grid type  condor,  to  have  files  other  than
          standard  output  and  standard  error transferred from the execute machine back to the
          submit machine, do use transfer_output_files, listing  all  files  to  be  transferred.
          These files are found on the execute machine in the working directory of the job.

          When  a  path to an output file or directory is specified, it specifies the path to the
          file on the execute side. As a destination on the submit side, the file  is  placed  in
          the  job's  initial  working  directory,  and  it  is  named using the base name of the
          original path. For example,  path/to/output_file  becomes   output_file  in  the  job's
          initial  working directory. The name and path of the file that is written on the submit
          side may be modified by using transfer_output_remaps. Note  that  this  remap  function
          only works with files but not with directories.

          A  directory may be specified using a trailing path separator. An example of a trailing
          path separator is the slash character on Unix platforms; a directory  example  using  a
          trailing path separator is  input_data/ . When a directory is specified with a trailing
          path separator, the contents of the directory are transferred, but the directory itself
          is  not  transferred. It is as if each of the items within the directory were listed in
          the transfer list.  When  there  is  no  trailing  path  separator,  the  directory  is
          transferred,  its  contents  are  transferred, and these contents are placed inside the
          transferred directory.

          For grid universe jobs other than  HTCondor-C,  the  transfer  of  directories  is  not
          currently supported.

          Symbolic  links  to  files  are  transferred  as  the  files they point to. Transfer of
          symbolic links to directories is not currently supported.

       transfer_output_remaps <`` name newname ; name2 newname2 ... ''>

          This specifies the name (and optionally path) to use when downloading output files from
          the  completed  job. Normally, output files are transferred back to the initial working
          directory with the same name they had in the execution directory. This  gives  you  the
          option  to save them with a different path or name. If you specify a relative path, the
          final path will be relative to the job's initial working directory.

          namedescribes an output file name produced by your job, and newnamedescribes  the  file
          name  it  should  be downloaded to. Multiple remaps can be specified by separating each
          with a semicolon. If you wish  to  remap  file  names  that  contain  equals  signs  or
          semicolons,  these  special  characters  may  be  escaped  with a backslash. You cannot
          specify directories to be remapped.

       when_to_transfer_output = <ON_EXIT | ON_EXIT_OR_EVICT >

          Setting when_to_transfer_outputequal to ON_EXITwill  cause  HTCondor  to  transfer  the
          job's output files back to the submitting machine only when the job completes (exits on
          its own).

          The ON_EXIT_OR_EVICToption is intended for fault tolerant jobs which periodically  save
          their own state and can restart where they left off. In this case, files are spooled to
          the submit machine any time the job leaves a remote site, either because it  exited  on
          its  own, or was evicted by the HTCondor system for any reason prior to job completion.
          The files spooled back are placed in a directory defined by the  value  of  the   SPOOL
          configuration  variable.  Any  output  files transferred back to the submit machine are
          automatically sent back out again as input files if the job restarts.

       POLICY COMMANDS

       hold = <True | False>

          If holdis set to  True , then the submitted job will be placed  into  the  Hold  state.
          Jobs  in  the  Hold  state  will  not run until released by condor_release. Defaults to
          False .

       keep_claim_idle = <integer>

          An integer number of seconds that  a  job  requests  the  condor_scheddto  wait  before
          releasing its claim after the job exits or after the job is removed.

          The process by which the condor_scheddclaims a condor_startdis somewhat time-consuming.
          To amortize this cost, the condor_scheddtries to reuse claims to run  subsequent  jobs,
          after a job using a claim is done. However, it can only do this if there is an idle job
          in the queue at the moment the previous job completes. Sometimes,  and  especially  for
          the  node  jobs when using DAGMan, there is a subsequent job about to be submitted, but
          it has not yet arrived in the queue when the previous job completes. As a  result,  the
          condor_scheddreleases the claim, and the next job must wait an entire negotiation cycle
          to start. When this submit command is defined with a non-negative integer, when the job
          exits,  the  condor_scheddtries  as  usual to reuse the claim. If it cannot, instead of
          releasing the claim, the condor_scheddkeeps  the  claim  until  either  the  number  of
          seconds  given as a parameter, or a new job which matches that claim arrives, whichever
          comes first. The condor_startdin question will remain in the  Claimed/Idle  state,  and
          the original job will be "charged" (in terms of priority) for the time in this state.

       leave_in_queue = <ClassAd Boolean Expression>

          When  the ClassAd Expression evaluates to  True , the job is not removed from the queue
          upon completion. This allows the user of a remotely  spooled  job  to  retrieve  output
          files in cases where HTCondor would have removed them as part of the cleanup associated
          with completion. The job will only exit the queue once it has been marked  for  removal
          (via  condor_rm,  for  example)  and  the  leave_in_queueexpression has become  False .
          leave_in_queuedefaults to  False .

          As an example, if the  job  is  to  be  removed  once  the  output  is  retrieved  with
          condor_transfer_data, then use

       leave_in_queue = (JobStatus == 4) && ((StageOutFinish =?= UNDEFINED) ||\

                       (StageOutFinish == 0))

       next_job_start_delay = <ClassAd Boolean Expression>

          This  expression  specifies  the  number of seconds to delay after starting up this job
          before the next job is started. The maximum allowed delay is specified by the  HTCondor
          configuration  variable   MAX_NEXT_JOB_START_DELAY , which defaults to 10 minutes. This
          command does not apply to scheduleror localuniverse jobs.

          This command has been historically used to implement a form  of  job  start  throttling
          from  the  job  submitter's  perspective. It was effective for the case of multiple job
          submission where the transfer of extremely large input data sets to the execute machine
          caused  machine  performance to suffer. This command is no longer useful, as throttling
          should be accomplished through configuration of the condor_schedddaemon.

       on_exit_hold = <ClassAd Boolean Expression>

          The ClassAd expression is checked when the job exits, and if  True  ,  places  the  job
          into  the  Hold  state.  If   False  (the default value when not defined), then nothing
          happens and the  on_exit_remove expression is checked to determine if that needs to  be
          applied.

          For  example:  Suppose a job is known to run for a minimum of an hour. If the job exits
          after less than an hour, the job should be placed on hold and  an  e-mail  notification
          sent, instead of being allowed to leave the queue.

        on_exit_hold = (CurrentTime - JobStartDate) < (60 * $(MINUTE))

          This expression places the job on hold if it exits for any reason before running for an
          hour. An e-mail will be sent to the user explaining that the job  was  placed  on  hold
          because this expression became  True .

          periodic_*  expressions  take  precedence  over   on_exit_*  expressions,  and   *_hold
          expressions take precedence over a  *_remove expressions.

          Only job ClassAd attributes will be defined for use by this  ClassAd  expression.  This
          expression  is  available  for  the  vanilla, java, parallel, grid, local and scheduler
          universes. It is additionally available, when submitted from a Unix  machine,  for  the
          standard universe.

       on_exit_hold_reason = <ClassAd String Expression>

          When  the job is placed on hold due to the on_exit_holdexpression becoming  True , this
          expression is evaluated to set the value of  HoldReason in the  job  ClassAd.  If  this
          expression  is  UNDEFINED or produces an empty or invalid string, a default description
          is used.

       on_exit_hold_subcode = <ClassAd Integer Expression>

          When the job is placed on hold due to the on_exit_holdexpression becoming  True ,  this
          expression  is evaluated to set the value of  HoldReasonSubCode in the job ClassAd. The
          default subcode is 0. The  HoldReasonCode will be set to 3, which  indicates  that  the
          job went on hold due to a job policy expression.

       on_exit_remove = <ClassAd Boolean Expression>

          The  ClassAd  expression is checked when the job exits, and if  True (the default value
          when undefined), then it allows the job to leave the queue normally. If  False  ,  then
          the  job  is  placed  back  into the Idle state. If the user job runs under the vanilla
          universe, then the job restarts from the beginning. If the  user  job  runs  under  the
          standard universe, then it continues from where it left off, using the last checkpoint.

          For  example,  suppose  a job occasionally segfaults, but chances are that the job will
          finish  successfully  if  the  job   is   run   again   with   the   same   data.   The
          on_exit_removeexpression  can  cause  the  job to run again with the following command.
          Assume that the signal identifier for the segmentation fault  is  11  on  the  platform
          where the job will be running.

        on_exit_remove = (ExitBySignal == False) || (ExitSignal != 11)

          This  expression  lets the job leave the queue if the job was not killed by a signal or
          if it was killed by a signal other than 11, representing  segmentation  fault  in  this
          example.  So,  if  the  exited  due to signal 11, it will stay in the job queue. In any
          other case of the job exiting, the job will leave the queue as it normally  would  have
          done.

          As another example, if the job should only leave the queue if it exited on its own with
          status 0, this on_exit_removeexpression works well:

        on_exit_remove = (ExitBySignal == False) && (ExitCode == 0)

          If the job was killed by a signal or exited with a non-zero exit status, HTCondor would
          leave the job in the queue to run again.

          periodic_*  expressions  take  precedence  over   on_exit_*  expressions,  and   *_hold
          expressions take precedence over a  *_remove expressions.

          Only job ClassAd attributes will be defined for use by this  ClassAd  expression.  This
          expression  is  available  for  the  vanilla, java, parallel, grid, local and scheduler
          universes. It is additionally available, when submitted from a Unix  machine,  for  the
          standard  universe.  Note  that  the condor_schedddaemon, by default, only checks these
          periodic expressions once every 300 seconds. The period of  these  evaluations  can  be
          adjusted by setting the  PERIODIC_EXPR_INTERVAL configuration macro.

       periodic_hold = <ClassAd Boolean Expression>

          This  expression is checked periodically at an interval of the number of seconds set by
          the configuration variable  PERIODIC_EXPR_INTERVAL . If it becomes  True , the job will
          be placed on hold. If unspecified, the default value is  False .

          periodic_*  expressions  take  precedence  over   on_exit_*  expressions,  and   *_hold
          expressions take precedence over a  *_remove expressions.

          Only job ClassAd attributes will be defined for use by this  ClassAd  expression.  This
          expression  is  available  for  the  vanilla, java, parallel, grid, local and scheduler
          universes. It is additionally available, when submitted from a Unix  machine,  for  the
          standard  universe.  Note  that  the condor_schedddaemon, by default, only checks these
          periodic expressions once every 300 seconds. The period of  these  evaluations  can  be
          adjusted by setting the  PERIODIC_EXPR_INTERVAL configuration macro.

       periodic_hold_reason = <ClassAd String Expression>

          When the job is placed on hold due to the periodic_holdexpression becoming  True , this
          expression is evaluated to set the value of  HoldReason in the  job  ClassAd.  If  this
          expression  is  UNDEFINED or produces an empty or invalid string, a default description
          is used.

       periodic_hold_subcode = <ClassAd Integer Expression>

          When the job is placed on hold due to the periodic_holdexpression becoming  true,  this
          expression  is evaluated to set the value of  HoldReasonSubCode in the job ClassAd. The
          default subcode is 0. The  HoldReasonCode will be set to 3, which  indicates  that  the
          job went on hold due to a job policy expression.

       periodic_release = <ClassAd Boolean Expression>

          This  expression is checked periodically at an interval of the number of seconds set by
          the configuration variable  PERIODIC_EXPR_INTERVAL while the job is in the Hold  state.
          If the expression becomes  True , the job will be released.

          Only  job  ClassAd  attributes will be defined for use by this ClassAd expression. This
          expression is available for the vanilla, java,  parallel,  grid,  local  and  scheduler
          universes.  It  is  additionally available, when submitted from a Unix machine, for the
          standard universe. Note that the condor_schedddaemon, by default, only checks  periodic
          expressions  once every 300 seconds. The period of these evaluations can be adjusted by
          setting the  PERIODIC_EXPR_INTERVAL configuration macro.

       periodic_remove = <ClassAd Boolean Expression>

          This expression is checked periodically at an interval of the number of seconds set  by
          the  configuration  variable  PERIODIC_EXPR_INTERVAL . If it becomes  True , the job is
          removed from the queue. If unspecified, the default value is  False .

          See  the   Examples   section   of   this   manual   page   for   an   example   of   a
          periodic_removeexpression.

          periodic_*  expressions  take  precedence  over   on_exit_*  expressions,  and   *_hold
          expressions take precedence over a   *_remove  expressions.  So,  the   periodic_remove
          expression  takes  precedent  over  the  on_exit_remove expression, if the two describe
          conflicting actions.

          Only job ClassAd attributes will be defined for use by this  ClassAd  expression.  This
          expression  is  available  for  the  vanilla, java, parallel, grid, local and scheduler
          universes. It is additionally available, when submitted from a Unix  machine,  for  the
          standard  universe. Note that the condor_schedddaemon, by default, only checks periodic
          expressions once every 300 seconds. The period of these evaluations can be adjusted  by
          setting the  PERIODIC_EXPR_INTERVAL configuration macro.

       COMMANDS SPECIFIC TO THE STANDARD UNIVERSE

       allow_startup_script = <True | False>

          If  True,  a standard universe job will execute a script instead of submitting the job,
          and  the  consistency  check  to  see  if  the  executable  has   been   linked   using
          condor_compileis  omitted.  The  executablecommand  within  the submit description file
          specifies the name of the script. The script is used to do preprocessing before the job
          is  submitted.  The  shell script ends with an execof the job executable, such that the
          process id of the executable is the same as that  of  the  shell  script.  Here  is  an
          example script that gets a copy of a machine-specific executable before the exec.

         #! /bin/sh

         # get the host name of the machine
         $host=`uname -n`

         # grab a standard universe executable designed specifically
         # for this host
         scp elsewhere@cs.wisc.edu:${host} executable

         # The PID MUST stay the same, so exec the new standard universe process.
         exec  executable  ${1+"$@"}  If  this  command  is not present (defined), then the value
       defaults to false.

       append_files = file1, file2, ...

          If your job attempts to access a file mentioned in this list, HTCondor will  force  all
          writes  to  that  file  to be appended to the end. Furthermore, condor_submit  will not
          truncate it. This list uses the same syntax as compress_files, shown above.

          This option may yield some surprising results. If several jobs attempt to write to  the
          same  file,  their  output  may  be  intermixed.  If  a job is evicted from one or more
          machines during the course of its lifetime, such an output file might  contain  several
          copies  of the results. This option should be only be used when you wish a certain file
          to be treated as a running log instead of a precise result.

          This option only applies to standard-universe jobs.

       buffer_files <`` name (size,block-size) ; name2 (size,block-size) ... '' >

       buffer_size <bytes-in-buffer>

       buffer_block_size <bytes-in-block>

          HTCondor keeps a buffer of recently-used data for each file a job accesses. This buffer
          is used both to cache commonly-used data and to consolidate small reads and writes into
          larger operations that get better  throughput.  The  default  settings  should  produce
          reasonable results for most programs.

          These options only apply to standard-universe jobs.

          If  needed,  you  may  set  the  buffer  controls  individually for each file using the
          buffer_files option. For example, to set the buffer size to 1 Mbyte and the block  size
          to 256 Kbytes for the file  input.data , use this command:

       buffer_files = "input.data=(1000000,256000)"

          Alternatively,  you  may  use  these two options to set the default sizes for all files
          used by your job:

       buffer_size = 1000000
       buffer_block_size = 256000

          If you do not set these, HTCondor will use the values given by these two  configuration
          file macros:

       DEFAULT_IO_BUFFER_SIZE = 1000000
       DEFAULT_IO_BUFFER_BLOCK_SIZE = 256000

          Finally, if no other settings are present, HTCondor will use a buffer of 512 Kbytes and
          a block size of 32 Kbytes.

       compress_files = file1, file2, ...

          If your job attempts to access any of the files mentioned in this list,  HTCondor  will
          automatically  compress them (if writing) or decompress them (if reading). The compress
          format is the same as used by GNU gzip.

          The files given in this list may be simple file names or complete paths and may include
          as  a  wild  card.  For example, this list causes the file /tmp/data.gz, any file named
          event.gz, and any file ending in .gzip to be automatically compressed  or  decompressed
          as needed:

       compress_files = /tmp/data.gz, event.gz, *.gzip

          Due  to  the  nature  of the compression format, compressed files must only be accessed
          sequentially. Random access reading is allowed but is very slow,  while  random  access
          writing  is  simply  not  possible.  This  restriction  may  be  avoided  by using both
          compress_files and fetch_files at the same time. When this is done, a file is  kept  in
          the  decompressed state at the execution machine, but is compressed for transfer to its
          original location.

          This option only applies to standard universe jobs.

       fetch_files = file1, file2, ...

          If your  job  attempts  to  access  a  file  mentioned  in  this  list,  HTCondor  will
          automatically  copy  the  whole file to the executing machine, where it can be accessed
          quickly. When your job closes the  file,  it  will  be  copied  back  to  its  original
          location. This list uses the same syntax as compress_files, shown above.

          This option only applies to standard universe jobs.

       file_remaps <`` name newname ; name2 newname2 ... ''>

          Directs  HTCondor  to  use a new file name in place of an old one. namedescribes a file
          name that your job may attempt to open, and newnamedescribes the file name it should be
          replaced  with.  newnamemay  include  an  optional leading access specifier,  local: or
          remote: . If left unspecified, the default access  specifier  is   remote:  .  Multiple
          remaps can be specified by separating each with a semicolon.

          This option only applies to standard universe jobs.

          If  you wish to remap file names that contain equals signs or semicolons, these special
          characters may be escaped with a backslash.

          Example One:

             Suppose that your job reads a file named  dataset.1 . To instruct HTCondor to  force
             your job to read  other.dataset instead, add this to the submit file:

       file_remaps = "dataset.1=other.dataset"

          Example Two:

             Suppose  that  your  run  many  jobs  which  all read in the same large file, called
             very.big . If this file can be found in the same place on  a  local  disk  in  every
             machine  in  the  pool,  (say  /bigdisk/bigfile ,) you can instruct HTCondor of this
             fact by remapping  very.big to  /bigdisk/bigfile and specifying that the file is  to
             be read locally, which will be much faster than reading over the network.

       file_remaps = "very.big = local:/bigdisk/bigfile"

          Example Three:

             Several remaps can be applied at once by separating each with a semicolon.

       file_remaps = "very.big = local:/bigdisk/bigfile ; dataset.1 = other.dataset"

       local_files = file1, file2, ...

          If your job attempts to access a file mentioned in this list, HTCondor will cause it to
          be read or written at the execution machine. This is most useful  for  temporary  files
          not  used  for input or output. This list uses the same syntax as compress_files, shown
          above.

       local_files = /tmp/*

          This option only applies to standard universe jobs.

       want_remote_io = <True | False>

          This option controls how a file is opened and manipulated in a standard  universe  job.
          If this option is true, which is the default, then the condor_shadowmakes all decisions
          about how each and every file should be opened by the executing  job.  This  entails  a
          network  round trip (or more) from the job to the condor_shadowand back again for every
          single  open() in addition to other needed information about the file. If set to false,
          then when the job queries the condor_shadowfor the first time about how to open a file,
          the condor_shadowwill  inform  the  job  to  automatically  perform  all  of  its  file
          manipulation  on  the  local  file system on the execute machine and any file remapping
          will be ignored. This means that there mustbe a shared file system (such as NFS or AFS)
          between the execute machine and the submit machine and that ALLpaths that the job could
          open on the execute machine must be valid. The ability of the standard universe job  to
          checkpoint,  possibly  to  a  checkpoint  server,  is  not  affected by this attribute.
          However, when the job resumes it will be expecting the same file system conditions that
          were present when the job checkpointed.

       COMMANDS FOR THE GRID

       batch_queue = <queuename>

          Used for pbs, lsf, and sgegrid universe jobs. Specifies the name of the PBS/LSF/SGE job
          queue into which the job should be submitted. If not specified, the  default  queue  is
          used.

       cream_attributes = <name=value;... ;name=value>

          Provides a list of attribute/value pairs to be set in a CREAM job description of a grid
          universe job destined for the CREAM grid system. The pairs are separated by semicolons,
          and written in New ClassAd syntax.

       delegate_job_GSI_credentials_lifetime = <seconds>

          Specifies  the  maximum  number of seconds for which delegated proxies should be valid.
          The default  behavior  when  this  command  is  not  specified  is  determined  by  the
          configuration  variable   DELEGATE_JOB_GSI_CREDENTIALS_LIFETIME , which defaults to one
          day. A value of 0 indicates that the delegated proxy should be valid  for  as  long  as
          allowed by the credential used to create the proxy. This setting currently only applies
          to proxies delegated for non-grid jobs and for HTCondor-C jobs. It does  not  currently
          apply  to  globus  grid  jobs,  which always behave as though this setting were 0. This
          variable has no effect if the configuration variable   DELEGATE_JOB_GSI_CREDENTIALS  is
          False , because in that case the job proxy is copied rather than delegated.

       deltacloud_hardware_profile = <Deltacloud profile name>

          Used  for  deltacloudjobs.  An  optional  identifier for the type of VM desired. If not
          provided, a service-defined default is used.

       deltacloud_hardware_profile_cpu = <cpu details>

          Used for deltacloudjobs. An optional description  of  the  CPUs  desired  for  the  VM,
          overriding the selected hardware profile.

       deltacloud_hardware_profile_memory = <memory details>

          Used  for  deltacloudjobs.  An optional description of the memory (RAM) desired for the
          VM, overriding the selected hardware profile.

       deltacloud_hardware_profile_storage = <storage details>

          Used for deltacloudjobs. An optional description of the storage (disk) desired for  the
          VM, overriding the selected hardware profile.

       deltacloud_image_id = <Deltacloud image ID>

          Used for deltacloudjobs. Identifier of the VM image to run.

       deltacloud_keyname = <Deltacloud key name>

          Used  for  deltacloudjobs.  Identifier of the SSH key pair that should be used to allow
          remote login to the  running  instance.  The  key  pair  needs  to  be  created  before
          submission.

       deltacloud_password_file = <pathname>

          Used  for  deltacloudjobs. Path and file name of a file containing the secret key to be
          used to authenticate with a Deltacloud service.

       deltacloud_realm_id = <Deltacloud realm ID>

          Used for deltacloudjobs. An optional identifier specifying which of multiple  locations
          within  a  cloud  service  should  be  used  to run the VM. If not provided, a service-
          selected default is used.

       deltacloud_user_data = <data>

          Used for deltacloudjobs. A string, representing a block of data that can be accessed by
          the virtual machine job inside the cloud service.

       deltacloud_username = <Deltacloud username>

          Used  for  deltacloudjobs.  The  user name to be used to authenticate with a Deltacloud
          service.

       ec2_access_key_id = <pathname>

          For grid type ec2jobs, identifies the file containing the access key.

       ec2_ami_id = <EC2 xMI ID>

          For grid type ec2jobs, identifies the machine image. Services compatible with  the  EC2
          Query  API  may refer to these with abbreviations other than  AMI , for example  EMI is
          valid for Eucalyptus.

       ec2_availability_zone = <zone name>

          For grid type ec2jobs, specifies the Availability Zone that the instance should be  run
          in.  This command is optional, unless ec2_ebs_volumesis set. As an example, one current
          zone is  us-east-1b .

       ec2_ebs_volumes = <ebs name>:<device name>,<ebs name>:<device name>,...

          For grid type ec2jobs, optionally specifies a list of Elastic Block Store (EBS) volumes
          to  be  made  available  to  the  instance and the device names they should have in the
          instance.

       ec2_elastic_ip = <elastic IP address>

          For grid type ec2jobs, and optional specification of an Elastic IP address that  should
          be assigned to this instance.

       ec2_instance_type = <instance type>

          For  grid  type  ec2jobs,  identifies  the  instance type. Different services may offer
          different instance types, so no default value is set.

       ec2_key_pair = <ssh key-pair name>

          For grid type ec2jobs, specifies the name of an SSH key-pair that is already registered
          with  the  EC2  service.  The associated private key can be used to sshinto the virtual
          machine once it is running.

       ec2_key_pair_file = <pathname>

          For grid type ec2jobs, specifies the complete path and file name of a file  into  which
          HTCondor  will  write  an SSH key for use with ec2 jobs. The key can be used to sshinto
          the virtual machine  once  it  is  running.  If  ec2_keypairis  specified  for  a  job,
          ec2_keypair_fileis ignored.

       ec2_secret_access_key = <pathname>

          For  grid  type  ec2jobs, specifies the path and file name containing the secret access
          key.

       ec2_security_groups = group1, group2, ...

          For grid type ec2jobs, defines  the  list  of  EC2  security  groups  which  should  be
          associated with the job.

       ec2_spot_price = <bid>

          For  grid type ec2jobs, specifies the spot instance bid, which is the most that the job
          submitter is willing to pay per hour to run this job.

       ec2_tag_names = <name0,name1,name...>

          For grid type ec2jobs, specifies the case of tag names that will be associated with the
          running  instance.  This  is  only necessary if a tag name case matters. By default the
          list will be automatically generated.

       ec2_tag_<name>= <value>

          For grid type ec2jobs, specifies a tag to be associated with the running instance.  The
          tag name will be lower-cased, use ec2_tag_namesto change the case.

       ec2_user_data = <data>

          For  grid  type  ec2jobs,  provides a block of data that can be accessed by the virtual
          machine. If both ec2_user_dataand ec2_user_data_fileare specified for a  job,  the  two
          blocks  of  data  are concatenated, with the data from this ec2_user_datasubmit command
          occurring first.

       ec2_user_data_file = <pathname>

          For grid type ec2jobs, specifies a path and file name whose contents can be accessed by
          the  virtual  machine.  If  both ec2_user_dataand ec2_user_data_fileare specified for a
          job,  the  two  blocks  of  data  are   concatenated,   with   the   data   from   that
          ec2_user_datasubmit command occurring first.

       ec2_vpc_ip = <a.b.c.d>

          For  grid  type  ec2jobs,  that  are part of a Virtual Private Cloud (VPC), an optional
          specification of the IP address that this instance should have within the VPC.

       ec2_vpc_subnet = <subnet specification string>

          For grid type ec2jobs, an optional specification of the  Virtual  Private  Cloud  (VPC)
          that this instance should be a part of.

       globus_rematch = <ClassAd Boolean Expression>

          This expression is evaluated by the condor_gridmanagerwhenever:

             1. the globus_resubmitexpression evaluates to  True

             2.  the condor_gridmanagerdecides it needs to retry a submission (as when a previous
             submission failed to commit) If globus_rematchevaluates to  True  ,  then  beforethe
             job  is  submitted  again  to  globus,  the  condor_gridmanagerwill request that the
             condor_schedddaemon renegotiate with the  matchmaker  (the  condor_negotiator).  The
             result is this job will be matched again.

       globus_resubmit = <ClassAd Boolean Expression>

          The    expression    is    evaluated    by    the   condor_gridmanagereach   time   the
          condor_gridmanagergets a job ad to manage. Therefore, the expression is evaluated:

             1. when a grid universe job is first submitted to HTCondor-G

             2. when a grid universe job is released from the hold state

             3. when HTCondor-G is restarted  (specifically,  whenever  the  condor_gridmanageris
             restarted)  If  the  expression evaluates to  True , then any previous submission to
             the grid universe will be forgotten and this job will be submitted again as a  fresh
             submission  to the grid universe. This may be useful if there is a desire to give up
             on a previous submission and try again. Note that this may result in  the  same  job
             running more than once. Do not treat this operation lightly.

       globus_rsl = <RSL-string>

          Used  to  provide  any additional Globus RSL string attributes which are not covered by
          other submit description file commands or job attributes.  Used  for  griduniversejobs,
          where the grid resource has a grid-type-stringof gt2.

       grid_resource = <grid-type-string><grid-specific-parameter-list>

          For  each  grid-type-stringvalue,  there  are  further  type-specific  values that must
          specified. This submit description file command allows each to be  given  in  a  space-
          separated  list. Allowable grid-type-stringvalues are batch, condor, cream, deltacloud,
          ec2, gt2, gt5, lsf, nordugrid, pbs, sge, and unicore. The HTCondor  manual  chapter  on
          Grid Computing details the variety of grid types.

          For  a  grid-type-stringof  batch,  the single parameter is the name of the local batch
          system, and will be one of  pbs ,  lsf , or  sge .

          For a grid-type-stringof condor,  the  first  parameter  is  the  name  of  the  remote
          condor_schedddaemon.  The  second parameter is the name of the pool to which the remote
          condor_schedddaemon belongs.

          For a grid-type-stringof cream, there are three parameters. The first parameter is  the
          web services address of the CREAM server. The second parameter is the name of the batch
          system that sits behind the CREAM  server.  The  third  parameter  identifies  a  site-
          specific queue within the batch system.

          For  a grid-type-stringof deltacloud, the single parameter is the URL of the deltacloud
          service requested.

          For a grid-type-stringof ec2, one additional parameter specifies the EC2 URL.

          For a grid-type-stringof gt2, the single parameter is  the  name  of  the  pre-WS  GRAM
          resource to be used.

          For  a  grid-type-stringof  gt5,  the  single  parameter is the name of the pre-WS GRAM
          resource to be used, which is the same as for the grid-type-stringof gt2.

          For a grid-type-stringof lsf, no additional parameters are used.

          For a grid-type-stringof nordugrid, the single parameter is the name of  the  NorduGrid
          resource to be used.

          For a grid-type-stringof pbs, no additional parameters are used.

          For a grid-type-stringof sge, no additional parameters are used.

          For  a grid-type-stringof unicore, the first parameter is the name of the Unicore Usite
          to be used. The second parameter is the name of the Unicore Vsite to be used.

       keystore_alias = <name>

          A string to locate the certificate in a Java keystore file, as used for a unicorejob.

       keystore_file = <pathname>

          The complete path and file name of the Java keystore file containing the certificate to
          be used for a unicorejob.

       keystore_passphrase_file = <pathname>

          The complete path and file name to the file containing the passphrase protecting a Java
          keystore file containing the certificate. Relevant for a unicorejob.

       MyProxyCredentialName = <symbolic name>

          The symbolic name that identifies a credential to the MyProxyserver. This symbolic name
          is set as the credential is initially stored on the server (using myproxy-init).

       MyProxyHost = <host>:<port>

          The Internet address of the host that is the MyProxyserver. The hostmay be specified by
          either a host  name  (as  in   head.example.com  )  or  an  IP  address  (of  the  form
          123.456.7.8). The portnumber is an integer.

       MyProxyNewProxyLifetime = <number-of-minutes>

          The new lifetime (in minutes) of the proxy after it is refreshed.

       MyProxyPassword = <password>

          The  password needed to refresh a credential on the MyProxyserver. This password is set
          when the user initially stores credentials on the server (using  myproxy-init).  As  an
          alternative to using MyProxyPasswordin the submit description file, the password may be
          specified as a command line argument to condor_submit with the -passwordargument.

       MyProxyRefreshThreshold = <number-of-seconds>

          The time (in seconds) before the expiration  of  a  proxy  that  the  proxy  should  be
          refreshed.  For  example,  if MyProxyRefreshThresholdis set to the value 600, the proxy
          will be refreshed 10 minutes before it expires.

       MyProxyServerDN = <credential subject>

          A  string  that  specifies  the  expected  Distinguished  Name   (credential   subject,
          abbreviated  DN)  of  the MyProxyserver. It must be specified when the MyProxyserver DN
          does not follow the conventional naming scheme of a host credential. This  occurs,  for
          example, when the MyProxyserver DN begins with a user credential.

       nordugrid_rsl = <RSL-string>

          Used  to  provide any additional RSL string attributes which are not covered by regular
          submit description file parameters. Used when the universeis grid, and the type of grid
          system is nordugrid.

       transfer_error = <True | False>

          For  jobs  submitted  to the grid universe only. If  True , then the error output (from
          stderr ) from the job is transferred  from  the  remote  machine  back  to  the  submit
          machine.  The name of the file after transfer is given by the errorcommand. If  False ,
          no transfer takes place (from the remote machine to submit machine), and  the  name  of
          the file is given by the errorcommand. The default value is  True .

       transfer_input = <True | False>

          For  jobs  submitted to the grid universe only. If  True , then the job input ( stdin )
          is transferred from the machine where the job was submitted to the remote machine.  The
          name of the file that is transferred is given by the inputcommand. If  False , then the
          job's input is taken from a pre-staged file on the remote machine, and the name of  the
          file is given by the inputcommand. The default value is  True .

          For transferring files other than  stdin , see transfer_input_files.

       transfer_output = <True | False>

          For  jobs submitted to the grid universe only. If  True , then the output (from  stdout
          ) from the job is transferred from the remote machine back to the submit  machine.  The
          name  of the file after transfer is given by the outputcommand. If  False , no transfer
          takes place (from the remote machine to submit machine), and the name of  the  file  is
          given by the outputcommand. The default value is  True .

          For transferring files other than  stdout , see transfer_output_files.

       use_x509userproxy = <True | False>

          Set  this  command  to   True to indicate that the job requires an X.509 user proxy. If
          x509userproxyis set, then that file is used for the  proxy.  Otherwise,  the  proxy  is
          looked  for  in  the standard locations. If x509userproxyis set or if the job is a grid
          universe  job  of  grid  type  gt2,  gt5,  cream,  or  nordugrid,  then  the  value  of
          use_x509userproxyis forced to  True . Defaults to  False .

       x509userproxy = <full-pathname>

          Used  to  override  the  default  path  name  for  X.509 user certificates. The default
          location for X.509 proxies is the  /tmp directory, which  is  generally  a  local  file
          system.  Setting  this  value would allow HTCondor to access the proxy in a shared file
          system (for example, AFS).  HTCondor  will  use  the  proxy  specified  in  the  submit
          description file first. If nothing is specified in the submit description file, it will
          use the environment variable X509_USER_PROXY. If that variable is not present, it  will
          search in the default location.

          x509userproxyis  relevant  when  the universeis vanilla, or when the universeis gridand
          the type of grid system is one of gt2, gt5, condor, cream,  or  nordugrid.  Defining  a
          value causes the proxy to be delegated to the execute machine. Further, VOMS attributes
          defined in the proxy will appear in the job ClassAd.

       COMMANDS FOR PARALLEL, JAVA, and SCHEDULER UNIVERSES

       hold_kill_sig = <signal-number>

          For the scheduler universe only, signal-numberis the signal delivered to the  job  when
          the  job  is  put  on  hold  with condor_hold. signal-numbermay be either the platform-
          specific name or value of the signal. If this command is  not  present,  the  value  of
          kill_sigis used.

       jar_files = <file_list>

          Specifies  a  list of additional JAR files to include when using the Java universe. JAR
          files will be transferred along with the executable  and  automatically  added  to  the
          classpath.

       java_vm_args = <argument_list>

          Specifies  a list of additional arguments to the Java VM itself, When HTCondor runs the
          Java program, these are the arguments that go before the class name. This can  be  used
          to  set  VM-specific arguments like stack size, garbage-collector arguments and initial
          property values.

       machine_count = <max>

          For the parallel universe, a single value (max) is required. It is neither a maximum or
          minimum, but the number of machines to be dedicated toward running the job.

       remove_kill_sig = <signal-number>

          For  the  scheduler universe only, signal-numberis the signal delivered to the job when
          the job is removed with condor_rm. signal-numbermay  be  either  the  platform-specific
          name or value of the signal. This example shows it both ways for a Linux signal:

       remove_kill_sig = SIGUSR1
       remove_kill_sig = 10

          If this command is not present, the value of kill_sigis used.

       COMMANDS FOR THE VM UNIVERSE

       vm_disk = file1:device1:permission1, file2:device2:permission2:format2, ...

          A  list of comma separated disk files. Each disk file is specified by 4 colon separated
          fields. The first field is the path and file name of the disk file.  The  second  field
          specifies  the  device.  The third field specifies permissions, and the optional fourth
          field specifies the image format.

          An example that specifies two disk files:

       vm_disk = /myxen/diskfile.img:sda1:w,/myxen/swap.img:sda2:w

       vm_checkpoint = <True | False>

          A boolean value specifying whether or not to take checkpoints. If  not  specified,  the
          default  value is  False . In the current implementation, setting both vm_checkpointand
          vm_networkingto  True does not yet work in all cases. Networking cannot be used if a vm
          universe  job  uses  a  checkpoint  in  order  to continue execution after migration to
          another machine.

       vm_macaddr = <MACAddr>

          Defines that MAC address that the virtual machine's network interface should  have,  in
          the standard format of six groups of two hexadecimal digits separated by colons.

       vm_memory = <MBytes-of-memory>

          The amount of memory in MBytes that a vm universe job requires.

       vm_networking = <True | False>

          Specifies whether to use networking or not. In the current implementation, setting both
          vm_checkpointand vm_networkingto  True does not  yet  work  in  all  cases.  Networking
          cannot  be  used  if a vm universe job uses a checkpoint in order to continue execution
          after migration to another machine.

       vm_networking_type = <nat | bridge >

          When vm_networkingis  True , this definition augments the job's requirements  to  match
          only  machines  with the specified networking. If not specified, then either networking
          type matches.

       vm_no_output_vm = <True | False>

          When  True , prevents HTCondor from transferring output files back to the machine  from
          which  the vm universe job was submitted. If not specified, the default value is  False
          .

       vm_type = <vmware | xen | kvm>

          Specifies the underlying virtual machine software that this job expects.

       vmware_dir = <pathname>

          The  complete  path  and  name  of  the  directory  where  VMware-specific  files   and
          applications  such  as  the VMDK (Virtual Machine Disk Format) and VMX (Virtual Machine
          Configuration) reside. This command is  optional;  when  not  specified,  all  relevant
          VMware image files are to be listed using transfer_input_files.

       vmware_should_transfer_files = <True | False>

          Specifies  whether HTCondor will transfer VMware-specific files located as specified by
          vmware_dirto the execute machine ( True ) or rely  on  access  through  a  shared  file
          system  (  False  ).  Omission  of  this required command (for VMware vm universe jobs)
          results in an error message from condor_submit , and the job will not be submitted.

       vmware_snapshot_disk = <True | False>

          When  True , causes HTCondor to utilize a VMware snapshot  disk  for  new  or  modified
          files. If not specified, the default value is  True .

       xen_initrd = <image-file>

          When  xen_kernelgives  a  path and file name for the kernel image to use, this optional
          command may specify a path to and ramdisk ( initrd ) image file.

       xen_kernel = <included | path-to-kernel>

          A value of includedspecifies that the kernel is included in the disk file. If  not  one
          of these values, then the value is a path and file name of the kernel to be used.

       xen_kernel_params = <string>

          A string that is appended to the Xen kernel command line.

       xen_root = <string>

          A  string  that  is appended to the Xen kernel command line to specify the root device.
          This string is required when xen_kernelgives a path to  a  kernel.  Omission  for  this
          required case results in an error message during submission.

       ADVANCED COMMANDS

       accounting_group = <accounting-group-name>

          Causes  jobs to negotiate under the given accounting group. This value is advertised in
          the job ClassAd as  AcctGroup .  The  HTCondor  Administrator's  manual  contains  more
          information about accounting groups.

       accounting_group_user = <accounting-group-user-name>

          Sets  the  user  name  associated  with  the  accounting  group name for resource usage
          accounting purposes. If not set, defaults to the value of  the  job  ClassAd  attribute
          Owner  .  This  value  is  advertised  in  the  job  ClassAd  as  AcctGroupUser . If an
          accounting group has not been set with the  accounting_groupcommand,  this  command  is
          ignored.

       concurrency_limits = <string-list>

          A list of resources that this job needs. The resources are presumed to have concurrency
          limits placed upon them, thereby limiting the number of concurrent  jobs  in  execution
          which  need  the  named  resource. Commas and space characters delimit the items in the
          list. Each item in the list may specify  a  numerical  value  identifying  the  integer
          number  of  resources  required  for the job. The syntax follows the resource name by a
          colon character ( : ) and the numerical value. Details on concurrency limits are in the
          HTCondor Administrator's manual.

       copy_to_spool = <True | False>

          If  copy_to_spoolis  True , then condor_submit copies the executable to the local spool
          directory before running it on a remote host. As copying can be  quite  time  consuming
          and  unnecessary,  the  default  value  is   False for all job universes other than the
          standard universe. When  False , condor_submit does not copy the executable to a  local
          spool  directory. The default is  True in standard universe, because resuming execution
          from a checkpoint can only be guaranteed to work using precisely  the  same  executable
          that created the checkpoint.

       coresize = <size>

          Should  the user's program abort and produce a core file, coresizespecifies the maximum
          size in bytes of the core file which  the  user  wishes  to  keep.  If  coresizeis  not
          specified  in the command file, the system's user resource limit  coredumpsize is used.
          A value of -1 results in no limits being applied to the core file size.

       cron_day_of_month = <Cron-evaluated Day>

          The set of days of the month for which a deferral time  applies.  The  HTCondor  User's
          manual section on Time Scheduling for Job Execution has further details.

       cron_day_of_week = <Cron-evaluated Day>

          The  set  of  days  of  the week for which a deferral time applies. The HTCondor User's
          manual section on Time Scheduling for Job Execution has further details.

       cron_hour = <Cron-evaluated Hour>

          The set of hours of the day for which a deferral  time  applies.  The  HTCondor  User's
          manual section on Time Scheduling for Job Execution has further details.

       cron_minute = <Cron-evaluated Minute>

          The  set  of  minutes  within  an  hour for which a deferral time applies. The HTCondor
          User's manual section on Time Scheduling for Job Execution has further details.

       cron_month = <Cron-evaluated Month>

          The set of months within a year for which a deferral time applies. The HTCondor  User's
          manual section on Time Scheduling for Job Execution has further details.

       cron_prep_time = <ClassAd Integer Expression>

          Analogous  to  deferral_prep_time. The number of seconds prior to a job's deferral time
          that the job may be matched and sent to an execution machine.

       cron_window = <ClassAd Integer Expression>

          Analogous to the submit command deferral_window. It allows cron jobs  that  miss  their
          deferral time to begin execution.

          The  HTCondor  User's  manual  section on Time Scheduling for Job Execution has further
          details.

       dagman_log = <pathname>

          DAGMan inserts this command to specify an event log that it  watches  to  maintain  the
          state  of  the  DAG. If the logcommand is not specified in the submit file, DAGMan uses
          the logcommand to specify the event log.

       deferral_prep_time = <ClassAd Integer Expression>

          The number of seconds prior to a job's deferral time that the job may  be  matched  and
          sent to an execution machine.

          The  HTCondor  User's  manual  section on Time Scheduling for Job Execution has further
          details.

       deferral_time = <ClassAd Integer Expression>

          Allows a job to specify the time at  which  its  execution  is  to  begin,  instead  of
          beginning  execution  as soon as it arrives at the execution machine. The deferral time
          is an expression that evaluates to a  Unix  Epoch  timestamp  (the  number  of  seconds
          elapsed  since  00:00:00 on January 1, 1970, Coordinated Universal Time). Deferral time
          is evaluated with respect to the execution machine. This option  delays  the  start  of
          execution,  but  not  the matching and claiming of a machine for the job. If the job is
          not available and ready to begin execution at the deferral  time,  it  has  missed  its
          deferral time. A job that misses its deferral time will be put on hold in the queue.

          The  HTCondor  User's  manual  section on Time Scheduling for Job Execution has further
          details.

          Due to implementation details, a deferral time may not be used for  scheduler  universe
          jobs.

       deferral_window = <ClassAd Integer Expression>

          The  deferral window is used in conjunction with the deferral_timecommand to allow jobs
          that miss their deferral time to begin execution.

          The HTCondor User's manual section on Time Scheduling for  Job  Execution  has  further
          details.

       description = <string>

          A  string  that sets the value of the job ClassAd attribute  JobDescription . When set,
          tools which display the executable such as condor_qwill instead use this string.

       email_attributes = <list-of-job-ad-attributes>

          A comma-separated list of attributes from the job ClassAd. These attributes  and  their
          values will be included in the e-mail notification of job completion.

       image_size = <size>

          Advice to HTCondor specifying the maximum virtual image size to which the job will grow
          during its execution. HTCondor will then execute the job only on  machines  which  have
          enough  resources,  (such  as  virtual  memory),  to  support executing the job. If not
          specified, HTCondor will automatically make a (reasonably accurate) estimate about  the
          job's   size   and  adjust  this  estimate  as  the  program  runs.  If  specified  and
          underestimated, the job may crash due to the inability to acquire more  address  space;
          for  example, if  malloc() fails. If the image size is overestimated, HTCondor may have
          difficulty finding machines which have the  required  resources.  sizeis  specified  in
          Kbytes. For example, for an image size of 8 Megabytes, sizeshould be 8000.

       initialdir = <directory-path>

          Used  to  give  jobs a directory with respect to file input and output. Also provides a
          directory (on the machine from which the job is submitted) for the job event log,  when
          a full path is not specified.

          For  vanilla  universe  jobs  where  there  is  a shared file system, it is the current
          working directory on the machine where the job is executed.

          For vanilla or grid universe jobs where file transfer mechanisms are utilized (there is
          nota  shared  file  system),  it  is the directory on the machine from which the job is
          submitted where the input files come from, and where the job's output files go to.

          For standard universe jobs, it is the directory on the machine from which  the  job  is
          submitted  where  the  condor_shadowdaemon runs; the current working directory for file
          input and output accomplished through remote system calls.

          For scheduler universe jobs, it is the directory on the machine from which the  job  is
          submitted  where  the job runs; the current working directory for file input and output
          with respect to relative path names.

          Note that the path to the executable is notrelative to initialdir; if it is a  relative
          path, it is relative to the directory in which the condor_submit command is run.

       job_ad_information_attrs = <attribute-list>

          A  comma-separated  list of job ClassAd attribute names. The named attributes and their
          values are written to the job event log whenever any event is being written to the log.
          This     implements     the     same    thing    as    the    configuration    variable
          EVENT_LOG_INFORMATION_ATTRS (see page ), but it applies to the job event  log,  instead
          of the system event log.

       job_lease_duration = <number-of-seconds>

          For  vanilla and java universe jobs only, the duration (in seconds) of a job lease. The
          default value is twenty minutes for universes that support it. If a job  lease  is  not
          desired,  the  value can be explicitly set to 0 to disable the job lease semantics. The
          HTCondor User's manual  section  on  Special  Environment  Considerations  has  further
          details.

       job_machine_attrs = <attr1, attr2, ... >

          A  comma and/or space separated list of machine attribute names that should be recorded
          in the job ClassAd in addition to  the  ones  specified  by  the  condor_schedddaemon's
          system  configuration  variable  SYSTEM_JOB_MACHINE_ATTRS . When there are multiple run
          attempts, history of machine attributes from previous run attempts  may  be  kept.  The
          number  of  run  attempts  to store may be extended beyond the system-specified history
          length by using the submit file  command  job_machine_attrs_history_length.  A  machine
          attribute  named   X  will  be  inserted  into  the  job  ClassAd as an attribute named
          MachineAttrX0 . The previous value of this attribute will be named  MachineAttrX1 , the
          previous  to that will be named  MachineAttrX2 , and so on, up to the specified history
          length. A history of length 1 means that only   MachineAttrX0  will  be  recorded.  The
          value  recorded  in  the  job ClassAd is the evaluation of the machine attribute in the
          context of the job ClassAd when the condor_schedddaemon initiates the start up  of  the
          job. If the evaluation results in an  Undefined or  Error result, the value recorded in
          the job ad will be  Undefined or  Error , respectively.

       want_graceful_removal = <boolean expression>

          When  True , this causes a graceful shutdown of the job when the job is removed or  put
          on  hold,  giving  it  time  to  clean up or save state. Otherwise, the job is abruptly
          killed. The default is  false .

       kill_sig = <signal-number>

          When HTCondor needs to kick a job off of a machine, it will send  the  job  the  signal
          specified  by  signal-number.  signal-numberneeds  to  be an integer which represents a
          valid signal on the execution machine. For jobs submitted to the standard universe, the
          default value is the number for  SIGTSTP which tells the HTCondor libraries to initiate
          a checkpoint of the process. For jobs submitted to other universes, the default  value,
          when  not  defined,  is   SIGTERM , which is the standard way to terminate a program in
          Unix.

       kill_sig_timeout = <seconds>

          This submit command should no  longer  be  used  as  of  HTCondor  version  7.7.3;  use
          job_max_vacate_timeinstead.  If  job_max_vacate_timeis  not  defined,  this defines the
          number of seconds that HTCondor should wait following the sending of  the  kill  signal
          defined  by  kill_sigand  forcibly  killing  the job. The actual amount of time between
          sending the signal and forcibly killing the job is the smallest of this value  and  the
          configuration variable  KILLING_TIMEOUT , as defined on the execute machine.

       load_profile = <True | False>

          When   True  , loads the account profile of the dedicated run account for Windows jobs.
          May not be used with run_as_owner.

       match_list_length = <integer value>

          Defaults to the value zero (0). When match_list_lengthis defined with an integer  value
          greater than zero (0), attributes are inserted into the job ClassAd. The maximum number
          of attributes defined is given by the integer value. The job  ClassAds  introduced  are
          given as

       LastMatchName0 = "most-recent-Name"
       LastMatchName1 = "next-most-recent-Name"

          The value for each introduced ClassAd is given by the value of the  Name attribute from
          the machine ClassAd of  a  previous  execution  (match).  As  a  job  is  matched,  the
          definitions   for   these   attributes   will   roll,   with   LastMatchName1  becoming
          LastMatchName2 ,  LastMatchName0 becoming  LastMatchName1 , and   LastMatchName0  being
          set by the most recent value of the  Name attribute.

          An  intended  use  of  these  job  attributes  is  in  the requirements expression. The
          requirements can allow a job to prefer a match with either  the  same  or  a  different
          resource than a previous match.

       job_max_vacate_time = <integer expression>

          An  integer-valued expression (in seconds) that may be used to adjust the time given to
          an evicted job for gracefully shutting down. If the job's  setting  is  less  than  the
          machine's,  the  job's  is used. If the job's setting is larger than the machine's, the
          result depends on whether the job has any excess retirement time. If the job  has  more
          retirement  time  left than the machine's max vacate time setting, then retirement time
          will be converted into vacating time, up to the amount requested by the job.

          Setting this expression does not affect the job's resource requirements or preferences.
          For  a  job  to  only  run  on  a  machine with a minimum  MachineMaxVacateTime , or to
          preferentially run on such machines, explicitly specify this in the requirements and/or
          rank expressions.

       max_job_retirement_time = <integer expression>

          An  integer-valued  expression  (in  seconds) that does nothing unless the machine that
          runs the job has been configured to provide retirement time. Retirement time is a grace
          period  given  to  a  job to finish when a resource claim is about to be preempted. The
          default behavior in many cases is to take  as  much  retirement  time  as  the  machine
          offers, so this command will rarely appear in a submit description file.

          When  a resource claim is to be preempted, this expression in the submit file specifies
          the maximum run time of the job (in seconds, since the job  started).  This  expression
          has  no  effect,  if  it  is  greater  than the maximum retirement time provided by the
          machine policy. If the resource claim is notpreempted, this expression and the  machine
          retirement  policy  are  irrelevant.  If the resource claim ispreempted the job will be
          allowed to run until the retirement time expires, at which point it is hard-killed. The
          job  will  be soft-killed when it is getting close to the end of retirement in order to
          give it time to gracefully shut down. The  amount  of  lead-time  for  soft-killing  is
          determined by the maximum vacating time granted to the job.

          Standard  universe  jobs  and  any  jobs  running with nice_userpriority have a default
          max_job_retirement_timeof 0, so no retirement time is utilized by default. In all other
          cases,  no  default  value  is  provided,  so  the maximum amount of retirement time is
          utilized by default.

          Setting this expression does not affect the job's resource requirements or preferences.
          For  a  job  to  only  run  on  a  machine with a minimum  MaxJobRetirementTime , or to
          preferentially run on such machines, explicitly specify this in the requirements and/or
          rank expressions.

       nice_user = <True | False>

          Normally,  when  a machine becomes available to HTCondor, HTCondor decides which job to
          run based upon user and job priorities. Setting nice_userequal to  True tells  HTCondor
          not  to  use  your  regular  user priority, but that this job should have last priority
          among all users and all jobs. So jobs submitted in this fashion run  only  on  machines
          which  no  other  non-nice_user job wants -- a true ``bottom-feeder'' job! This is very
          handy if a user has some jobs they wish to run, but do not wish to use  resources  that
          could  instead  be  used  to  run  other people's HTCondor jobs. Jobs submitted in this
          fashion have ``nice-user.'' pre-appended in front of the owner name  when  viewed  from
          condor_qor condor_userprio. The default value is False.

       noop_job = <ClassAd Boolean Expression>

          When  this boolean expression is  True , the job is immediately removed from the queue,
          and HTCondor makes no attempt at running the job. The log file for the job will show  a
          job  submitted  event  and a job terminated event, along with an exit code of 0, unless
          the user specifies a different signal or exit code.

       noop_job_exit_code = <return value>

          When noop_jobis in the submit description file and evaluates to  True  ,  this  command
          allows  the  job  to  specify  the  return  value  as  shown  in the job's log file job
          terminated event. If not specified, the job will show as having terminated with  status
          0. This overrides any value specified with noop_job_exit_signal.

       noop_job_exit_signal = <signal number>

          When  noop_jobis  in  the submit description file and evaluates to  True , this command
          allows the job to specify the signal number that the job's log event will show the  job
          having terminated with.

       remote_initialdir = <directory-path>

          The  path  specifies  the  directory  in  which the job is to be executed on the remote
          machine. This is currently supported in all universes except for the standard universe.

       rendezvousdir = <directory-path>

          Used to  specify  the  shared  file  system  directory  to  be  used  for  file  system
          authentication when submitting to a remote scheduler. Should be a path to a preexisting
          directory.

       run_as_owner = <True | False>

          A boolean value that causes the job to be run under the  login  of  the  submitter,  if
          supported  by  the  joint  configuration  of  the  submit and execute machines. On Unix
          platforms, this defaults to  True , and on Windows platforms, it defaults to   False  .
          May   not  be  used  with  load_profile.  See  the  HTCondor  manual  Platform-Specific
          Information chapter for administrative details on configuring Windows to  support  this
          option.

       stack_size = <size in bytes>

          This  command  applies only to Linux platform jobs that are not standard universe jobs.
          An integer number of bytes, representing the amount of stack space to be allocated  for
          the  job. This value replaces the default allocation of stack space, which is unlimited
          in size.

       submit_event_notes = <note>

          A string that is appended to the submit event in the job's log file. For  DAGMan  jobs,
          the   string    DAG   Node:   and   the   node's  name  is  automatically  defined  for
          submit_event_notes, causing the logged submit  event  to  identify  the  DAG  node  job
          submitted.

       +<attribute>= <value>

          A  line  which begins with a '+' (plus) character instructs condor_submit to insert the
          following attributeinto the job ClassAd with the given value.

       PRE AND POST SCRIPTS IMPLEMENTED WITH SPECIALLY-NAMED ATTRIBUTES

       +PreCmd =  <executable>

          A vanilla universe job may specify that a script is to be run on  the  execute  machine
          before  the  job, and this is called a prescript. Definition of this specifically-named
          attribute causes the script, identified by path and file  name,  to  be  executed.  The
          prescript could prepare or initialize the job. Note that this definition of a prescript
          is  different  from  the  PRE  script  described  in  DAGMan.  The  prescript  is   not
          automatically  transferred  with  the  job,  as  the  main executable is, so it must be
          entered into the transfer_input_fileslist, when file transfer is enabled.

       +PreArgs =  <argument_list>

          Defines command line arguments for the prescript, presuming the Old argument syntax.

       +PreArguments =  <argument_list>

          Defines command line arguments for the prescript, presuming the New argument syntax. An
          exception  to the syntax is that double quotes must be escaped with a backslash instead
          of another double quote.

          Note that if both +PreArgs and +PreArguments are specified, the +PreArguments value  is
          used and the +PreArgs value is ignored.

       +PostCmd =  <executable>

          A  vanilla  universe  job may specify that a script is to be run on the execute machine
          after the job exits, and this is called a postscript. Definition of this  specifically-
          named  attribute  causes  the script, identified by path and file name, to be executed.
          The postscript is run if the job exits, but not if the job is evicted. Note  that  this
          definition  of  a postscript is different from the POST script described in DAGMan. The
          postscript is not automatically transferred with the job, as the main executable is, so
          it must be entered into the transfer_input_fileslist, when file transfer is enabled.

       +PostArgs =  <argument_list>

          Defines command line arguments for the postscript, presuming the Old argument syntax.

       +PostArguments =  <argument_list>

          Defines  command  line arguments for the postscript, presuming the New argument syntax.
          An exception to the syntax is that double quotes  must  be  escaped  with  a  backslash
          instead of another double quote mark.

          Note  that if both +PostArgs and +PostArguments are specified, the +PostArguments value
          is used and the +PostArgs value is ignored.

       If any of the prescript or postscript values are not enclosed in double quotes,  they  are
       silently ignored.

       Below is an example of the use of starter pre and post scripts:

       +PreCmd = "my_pre"
       +PreArgs = "pre\"arg1 prea'rg2"
       +PostCmd = "my_post"
       +PostArguments = "post\"arg1 'post''ar g2'"

       For  this example  PreArgs generates a first argument of  pre"a1" and a second argument of
       pre'a2 .  PostArguments generates a first argument of  post"a1 and a  second  argument  of
       post'a 2 .

       MACROS AND COMMENTS

       In addition to commands, the submit description file can contain macros and comments:

       Macros

          Parameterless macros in the form of  $(macro_name) may be inserted anywhere in HTCondor
          submit description files. Macros can be defined by lines in the form of

              <macro_name> = <string>

          Two pre-defined macros  are  supplied  by  the  submit  description  file  parser.  The
          $(Cluster)  macro  supplies  the value of the  ClusterId job ClassAd attribute, and the
          $(Process) macro supplies the value of the  ProcId job ClassAd attribute. These  macros
          are  intended  to  aid in the specification of input/output files, arguments, etc., for
          clusters with lots of jobs, and/or could be used to supply an HTCondor process with its
          own cluster and process numbers on the command line.

          The   $(Node)  macro  is defined for parallel universe jobs, and is especially relevant
          for MPI applications. It is a unique value assigned for the duration of  the  job  that
          essentially  identifies  the  machine  (slot)  on  which a program is executing. Values
          assigned start at 0 and increase monotonically. The values are assigned as the parallel
          job is about to start.

          Recursive definition of macros is permitted. An example of a construction that works is
          the following:

       foo = bar
       foo =  snap $(foo)

          As a result,  foo = snap bar .

          Note that both left- and right- recursion works, so

       foo = bar
       foo =  $(foo) snap

          has as its result  foo = bar snap .

          The construction

       foo = $(foo) bar

          by itself will notwork, as it does not have an initial base  case.  Mutually  recursive
          constructions such as:

       B = bar
       C = $(B)
       B = $(C) boo

          will notwork, and will fill memory with expansions.

          To use the dollar sign character ( $ ) as a literal, without macro expansion, use

       $(DOLLAR)

          In  addition  to  the  normal  macro,  there  is  also a special kind of macro called a
          substitution macrothat allows the substitution of a  machine  ClassAd  attribute  value
          defined  on  the  resource machine itself (gotten after a match to the machine has been
          made) into specific commands within the submit description file. The substitution macro
          is of the form:

       $$(attribute)

          As  this  form  of  the  substitution macro is only evaluated within the context of the
          machine ClassAd, use of a scope resolution prefix  TARGET. or  MY. is not allowed.

          A common use of this form of the substitution macro is for the heterogeneous submission
          of an executable:

       executable = povray.$$(OpSys).$$(Arch)

          Values  for the  OpSys and  Arch attributes are substituted at match time for any given
          resource. This example allows HTCondor to automatically choose the  correct  executable
          for the matched machine.

          An  extension to the syntax of the substitution macro provides an alternative string to
          use if the machine attribute within the substitution macro  is  undefined.  The  syntax
          appears as:

       $$(attribute:string_if_attribute_undefined)

          An  example  using  this extended syntax provides a path name to a required input file.
          Since the file can be placed in different locations on different machines,  the  file's
          path name is given as an argument to the program.

       arguments = $$(input_file_path:/usr/foo)

          On  the  machine,  if  the  attribute   input_file_path  is  not defined, then the path
          /usr/foo is used instead.

          A further extension to the syntax of the substitution macro allows the evaluation of  a
          ClassAd  expression  to  define  the  value.  In this form, the expression may refer to
          machine attributes by prefacing them with the   TARGET.  scope  resolution  prefix.  To
          place  a  ClassAd  expression into the substitution macro, square brackets are added to
          delimit the expression. The syntax appears as:

       $$([ClassAd expression])

          An example of a job that uses this syntax may be one that wants to know how much memory
          it  can use. The application cannot detect this itself, as it would potentially use all
          of the memory on a multi-slot machine. So the  job  determines  the  memory  per  slot,
          reducing  it by 10% to account for miscellaneous overhead, and passes this as a command
          line argument to the application. In the submit description file will be

       arguments = --memory $$([TARGET.Memory * 0.9])

          To insert two dollar sign characters ( $$ ) as literals into a ClassAd string, use

       $$(DOLLARDOLLAR)

          The environment macro, $ENV, allows the evaluation of an  environment  variable  to  be
          used in setting a submit description file command. The syntax used is

       $ENV(variable)

          An  example  submit description file command that uses this functionality evaluates the
          submitter's home directory in order to set the path and file name of a log file:

       log = $ENV(HOME)/jobs/logfile

          The environment variable is evaluated when the submit description file is processed.

          The $RANDOM_CHOICE macro allows a random choice  to  be  made  from  a  given  list  of
          parameters  at  submission  time.  For  an  expression,  if some randomness needs to be
          generated, the macro may appear as

          $RANDOM_CHOICE(0,1,2,3,4,5,6)

          When evaluated, one of the parameters values will be chosen.

       Comments

          Blank lines and lines beginning with a pound sign ('#') character are  ignored  by  the
          submit description file parser.

Exit Status

       condor_submitwill  exit with a status value of 0 (zero) upon success, and a non-zero value
       upon failure.

Examples

          * Submit Description File Example 1: This example queues three jobs  for  execution  by
          HTCondor.  The  first  will  be given command line arguments of 15and 2000, and it will
          write its standard output to   foo.out1  .  The  second  will  be  given  command  line
          arguments of 30and 2000, and it will write its standard output to  foo.out2 . Similarly
          the third will have arguments of 45and 6000, and it will use  foo.out3 for its standard
          output.  Standard  error  output  (if  any)  from  all  three  programs  will appear in
          foo.error .

            ####################
            #
            # submit description file
            # Example 1: queuing multiple jobs with differing
            # command line arguments and output files.
            #
            ####################

            Executable     = foo
            Universe       = standard

            Arguments      = 15 2000
            Output  = foo.out1
            Error   = foo.err1
            Queue

            Arguments      = 30 2000
            Output  = foo.out2
            Error   = foo.err2
            Queue

            Arguments      = 45 6000
            Output  = foo.out3
            Error   = foo.err3
            Queue

          * Submit Description File Example 2: This submit description file  example  queues  150
          runs  of program foowhich must have been compiled and linked for an Intel x86 processor
          running RHEL 3. HTCondor will not attempt to run the processes on machines  which  have
          less  than 32 Megabytes of physical memory, and it will run them on machines which have
          at least 64 Megabytes, if such machines are available. Stdin, stdout, and  stderr  will
          refer  to   in.0  ,   out.0 , and  err.0 for the first run of this program (process 0).
          Stdin, stdout, and stderr will refer to  in.1 ,  out.1 , and  err.1 for process 1,  and
          so  forth.  A  log  file  containing  entries about where and when HTCondor runs, takes
          checkpoints, and migrates processes in this cluster will be written into file   foo.log
          .

            ####################
            #
            # Example 2: Show off some fancy features including
            # use of pre-defined macros and logging.
            #
            ####################

            Executable     = foo
            Universe       = standard
            Requirements   = OpSys == "LINUX" && Arch =="INTEL"
            Rank           = Memory >= 64
            Request_Memory = 32 Mb
            Image_Size     = 28 Mb

            Error   = err.$(Process)
            Input   = in.$(Process)
            Output  = out.$(Process)
            Log = foo.log
            Queue 150

          *  Submit Description File Example 3: This example targets the /bin/sleepprogram to run
          only on a platform running a RHEL 6 operating system. The  example  presumes  that  the
          pool  contains  machines running more than one version of Linux, and this job needs the
          particular operating system to run correctly.

            ####################
            #
            # Example 3: Run on a RedHat 6 machine
            #
            ####################
            Universe     = vanilla
            Executable   = /bin/sleep
            Arguments    = 30
            Requirements = (OpSysAndVer == "RedHat6")

            Error   = err.$(Process)
            Input   = in.$(Process)
            Output  = out.$(Process)
            Log     = sleep.log
            Queue

          * Command Line example: The  following  command  uses  the  -appendoption  to  add  two
          commands  before  the job(s) is queued. A log file and an error log file are specified.
          The submit description file is unchanged.

       condor_submit  -a "log = out.log" -a "error = error.log" mysubmitfile

          Note that each of the added commands is contained within quote marks because there  are
          space characters within the command.

          *   periodic_remove  example:  A  job  should  be  removed from the queue, if the total
          suspension time of the job is more than half of the run time of the job.

          Including the command

         periodic_remove = CumulativeSuspensionTime >
                           ((RemoteWallClockTime - CumulativeSuspensionTime) / 2.0)

          in the submit description file causes this to happen.

General Remarks

          * For security reasons, HTCondor will refuse to run any jobs  submitted  by  user  root
          (UID  = 0) or by a user whose default group is group wheel (GID = 0). Jobs submitted by
          user root or a user with a default group of wheel will appear to  sit  forever  in  the
          queue in an idle state.

          *  All  path  names  specified  in  the  submit  description file must be less than 256
          characters in length, and command line arguments must be less than 4096  characters  in
          length;  otherwise, condor_submit gives a warning message but the jobs will not execute
          properly.

          * Somewhat understandably, behavior gets bizarre if  the  user  makes  the  mistake  of
          requesting  multiple HTCondor jobs to write to the same file, and/or if the user alters
          any files that need to be accessed by an HTCondor job which is still in the queue.  For
          example,  the  compressing of data or output files before an HTCondor job has completed
          is a common mistake.

          * To disable checkpointing for Standard Universe jobs, include the line:

            +WantCheckpoint = False

          in the submit description file before the queue command(s).

See Also

       HTCondor User Manual

Author

       Center for High Throughput Computing, University of Wisconsin-Madison

Copyright

       Copyright  (C)  1990-2013  Center  for  High  Throughput  Computing,   Computer   Sciences
       Department,  University  of  Wisconsin-Madison, Madison, WI. All Rights Reserved. Licensed
       under the Apache License, Version 2.0.

                                           January 2014                          condor_submit(1)