Provided by: htcondor_8.6.8~dfsg.1-2_amd64 bug

Name

       condor_submit Queue - jobs for execution under HTCondor

Synopsis

       condor_submit  [-terse]  [-verbose]  [-unused]  [-name  schedd_name] [-remote schedd_name]
       [-addr  <ip:port>]  [-pool   pool_name]   [-disable]   [-password   passphrase]   [-debug]
       [-appendcommand...]  [-batch-name  batch_name]  [-spool]  [-dump  filename] [-interactive]
       [-dry-run]   [-maxjobs   number-of-jobs]   [-single-cluster]   [-stm   method]   [<submit-
       variable>=<value>] [submit description file] [-queue queue_arguments]

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.

       The  submit  description  fileargument is 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. If  - is specified for the submit description
       file, -verboseis implied; this can be overridden by specifying -terse.

       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

       -terse

          Terse output - display JobId ranges only.

       -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 queuecommand within the submit
          description file, and come after all other previous commands. If the commandspecifies a
          queuecommand, as in the example

          condor_submit  mysubmitfile -append "queue input in A, B, C"

          then the entire -appendcommand line option and its arguments are converted to

          condor_submit  mysubmitfile -queue input in A, B, C

          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.

       -batch-name batch_name

          Set the batch name for this submit. The batch name is displayed by  condor_q-batch.  It
          is  intended  for  use by users to give meaningful names to their jobs and to influence
          how condor_qgroups jobs for display. Use of this argument takes precedence over a batch
          name specified in the submit description file itself.

       -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.

       -dry-run file

          Parse  the submit description file, sending the resulting job ClassAd to the file given
          by  file,  but  do  not  submit  the  job(s).  This  permits  observation  of  the  job
          specification,  and  it  facilitates debugging the submit description file contents. If
          fileis -, the output is written to  stdout .

       -maxjobs number-of-jobs

          If the total number of jobs specified by the submit description file is more  than  the
          integer  value given by number-of-jobs, then no jobs are submitted for execution and an
          error message is generated. A 0 or negative value for the number-of-jobscauses no limit
          to be imposed.

       -single-cluster

          If  the jobs specified by the submit description file causes more than a single cluster
          value to be assigned, then no jobs are submitted for execution and an error message  is
          generated.

       -stm method

          Specify   the   method   use   to  move  a  sandbox  into  HTCondor.  methodis  one  of
          stm_use_schedd_onlyor stm_use_transferd.

       <submit-variable>=<value>

          Defines a submit command or submit variable with a value, and parses it as  if  it  was
          placed  at the beginning of the submit description file. The submit description file is
          not changed. To correctly parse the condor_submit command line,  this  option  must  be
          specified without white space characters before and after the equals sign ( = ), or the
          entire option must be surrounded by double quote marks.

       -queue queue_arguments

          A command line specification of how many jobs to queue, which is only permitted if  the
          submit  description  file does not have a queuecommand. The queue_argumentsare the same
          as may be within a submit description file. The parsing of the  queue_argumentsfinishes
          at  the  end  of the line or when a dash character ( - ) is encountered. Therefore, its
          best placement within the command line will be at the end of the command line.

          On a Unix command line, the shell expands file globs before parsing occurs.

Submit Description File Commands

       Note: more information on submitting HTCondor jobs can be found here: 2.5.

       As of version 8.5.6, the condor_submitlanguage supports multi-line values in commands. The
       syntax is the same as the configuration language (see more details here: 3.3.5).

       Each  submit  description  file describes one or more clusters 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 generally the last command-line  argument  to  condor_submit.  If  the
       submit description file argument is omitted, condor_submitwill read the submit description
       from standard input.

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

       Note  that  a  submit  file  that  contains  more than one executable command will produce
       multiple clusters when submitted. This is not generally recommended, and  is  not  allowed
       for submit files that are run as DAG node jobs by condor_dagman.

       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 &rdquo;quoted&rdquo; 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 &rdquo;quoted&rdquo; 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.  If  a  relative  path  is
          specified,  it  is relative to the current working directory as the job is submitted or
          the directory specified by submit command initialdiron the submit machine.

       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.

          Note  that  the  priority  setting  in  an  HTCondor  submit file will be overridden by
          condor_dagmanif the submit file is used for a node in a DAG, and the  priority  of  the
          node within the DAG is non-zero (see 2.10.9for more details).

       queue [<int expr>]

          Places zero or more copies of the job into the HTCondor queue.

       queue

          [<int expr>] [<varname>] in[slice] <list of items>Places zero or more copies of the job
          in the queue based on items in a <list of items>

       queue

          [<int expr>] [<varname>] matching[files |  dirs]  [slice]  <list  of  items  with  file
          globbing>] Places zero or more copies of the job in the queue based on files that match
          a <list of items with file globbing>

       queue

          [<int expr>] [<list of varnames>] from[slice] <file name> |  <list  of  items>]  Places
          zero or more copies of the job in the queue based on lines from the submit file or from
          <file name>

          The optional argument <int expr>specifies how many times to repeat the  job  submission
          for  a  given set of arguments. It may be an integer or an expression that evaluates to
          an integer, and it defaults to 1. All but the first form of this  command  are  various
          ways  of  specifying  a list of items. When these forms are used <int expr>jobs will be
          queued for each item in the list. The in, matchingand  fromkeyword  indicates  how  the
          list will be specified.

             *  inThe  list of items is an explicit comma and/or space separated <list of items>.
             If the <list of items>begins with an open paren, and the close paren is not  on  the
             same line as the open, then the list continues until a line that begins with a close
             paren is read from the submit file.

             * matchingEach item in the <list of items with file globbing>will be matched against
             the  names  of  files  and directories relative to the current directory, the set of
             matching names is the resulting list of items.

                * filesOnly filenames will matched.

                * dirsOnly directory names will be matched.

             * from<file name> | <list of items>Each line from <file name>or <list of items>is  a
             single  item, this allows for multiple variables to be set for each item. Lines from
             <file name>or <list of items>will be split on comma and/or  space  until  there  are
             values  for each of the variables specified in <list of varnames>. The last variable
             will contain the remainder of the line. When the <list of items>form  is  used,  the
             list  continues  until  the  first  line  that  begins with a close paren, and lines
             beginning with pound sign ('#') will be skipped. When using the <file name>form,  if
             the <file name>ends with |, then it will be executed as a script whatever the script
             writes to  stdout will be the list of items. The optional argument <varname>or <list
             of  varnames>is  the  name or names of of variables that will be set to the value of
             the current item when queuing the job. If no <varname>is specified the variable ITEM
             will  be  used.  Leading  and  trailing whitespace be trimmed. The optional argument
             <slice>is a python style slice selecting only some of  the  items  in  the  list  of
             items. Negative step values are not supported.

          A  submit  file  may contain more than one queuestatement, and 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 | parallel | docker>

          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 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.

          The  paralleluniverse is for parallel jobs (e.g. MPI) that require multiple machines in
          order to run.

          The dockeruniverse runs a docker container as an HTCondor job.

       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,

              request_memory = max({60, Target.TotalSlotMemory})
              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 KiB 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
          KiB, numbers of bytes.  M or  MB indicates MiB, numbers of bytes.  G or   GB  indicates
          GiB, numbers of bytes.  T or  TB indicates TiB, numbers of bytes.

       request_memory = <quantity>

          The  required  amount of memory in MiB 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
          KiB, numbers of bytes.  M or  MB indicates MiB, numbers of bytes.  G or   GB  indicates
          GiB, numbers of bytes.  T or  TB indicates TiB, numbers of bytes.

       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.  Machines
          that have available GPUs will define  <name> to be  GPUs .

       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 network  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 network 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_execute_directory = <True | False>

          Defaults to  False . If set to  True , HTCondor will encrypt the contents of the remote
          scratch directory of the  machine  where  the  job  is  executed.  This  encryption  is
          transparent  to the job itself, but ensures that files left behind on the local disk of
          the execute machine, perhaps due to a system crash, will remain private.  In  addition,
          condor_submit will append to the job's requirementsexpression

        && (TARGET.HasEncryptExecuteDirectory)

          to ensure the job is matched to a machine that is capable of encrypting the contents of
          the execute directory. This support is limited to Windows platforms that use  the  NTFS
          file system and Linux platforms with the ecryptfs-utilspackage installed.

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

          A  comma  and/or  space  separated list of input files that are to be network 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 network encrypted.

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

          A comma and/or space separated list of output files that are to  be  network  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  network
          encrypted.

       max_transfer_input_mb = <ClassAd Integer Expression>

          This  integer  expression  specifies the maximum allowed total size in MiB 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 MiB 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 by appending the forward slash character (/) as a trailing
          path  separator.  This  syntax  is  used  for  both  Windows  and Linux submit hosts. A
          directory example using a trailing path separator is  input_data/ . When a directory is
          specified  with  the  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.  Setting
          transfer_output_filesto the empty string  (  ""  )  means  that  no  files  are  to  be
          transferred.

          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 < &ldquo; name newname ; name2 newname2 ... &rdquo;>

          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

       max_retries = <integer>

          The maximum number of retries allowed for this job (must be non-negative). If  the  job
          fails  (does  not  exit  with  the success_exit_codeexit code) it will be retried up to
          max_retriestimes (unless retries are ceased  because  of  the  retry_untilcommand).  If
          max_retriesis  not  defined, and either retry_untilor success_exit_codeis, the value of
          DEFAULT_JOB_MAX_RETRIES will be used for the maximum number of retries.

          The combination of the max_retries, retry_until, and  success_exit_codecommands  causes
          an  appropriate   OnExitRemove  expression  to  be  automatically  generated.  If retry
          command(s) and on_exit_removeare both defined, the   OnExitRemove  expression  will  be
          generated  by  OR'ing  the  expression  specified  in   OnExitRemove and the expression
          generated by the retry commands.

       retry_until <Integer | ClassAd Boolean Expression>

          An integer value or boolean expression that prevents further retries from taking place,
          even  if  max_retrieshave  not  been  exhausted.  If  retry_untilis an integer, the job
          exiting with that exit code will cause retries to cease.  If  retry_untilis  a  ClassAd
          expression, the expression evaluating to  True will cause retries to cease.

       success_exit_code = <integer>

          The exit code that is considered successful for this job. Defaults to 0 if not defined.

          Note:  non-zero  values  of  success_exit_codeshould generally not be used for DAG node
          jobs.At the present  time,  condor_dagmandoes  not  take  into  account  the  value  of
          success_exit_code.  This  means  that,  if success_exit_codeis set to a non-zero value,
          condor_dagmanwill consider the job failed when it actually  succeeds.  For  single-proc
          DAG  node jobs, this can be overcome by using a POST script that takes into account the
          value of success_exit_code(although this is not recommended). For multi-proc  DAG  node
          jobs, there is currently no way to overcome this limitation.

       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 = (time() - 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.

       periodic_hold = <ClassAd Boolean Expression>

          This  expression  is  checked periodically when the job is not in the Held state. 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.  Note
          that,  by default, this expression is only checked once every 60 seconds. The period of
          these  evaluations  can  be  adjusted  by   setting   the    PERIODIC_EXPR_INTERVAL   ,
          MAX_PERIODIC_EXPR_INTERVAL , and  PERIODIC_EXPR_TIMESLICE configuration macros.

       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  when  the job is in the Held state. If the
          expression becomes  True , the job will be released.

          Only job ClassAd attributes will be defined for use by this  ClassAd  expression.  Note
          that,  by default, this expression is only checked once every 60 seconds. The period of
          these  evaluations  can  be  adjusted  by   setting   the    PERIODIC_EXPR_INTERVAL   ,
          MAX_PERIODIC_EXPR_INTERVAL , and  PERIODIC_EXPR_TIMESLICE configuration macros.

       periodic_remove = <ClassAd Boolean Expression>

          This  expression is checked periodically. 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.  Note
          that,  by default, this expression is only checked once every 60 seconds. The period of
          these  evaluations  can  be  adjusted  by   setting   the    PERIODIC_EXPR_INTERVAL   ,
          MAX_PERIODIC_EXPR_INTERVAL , and  PERIODIC_EXPR_TIMESLICE configuration macros.

       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 < &ldquo; name (size,block-size) ; name2 (size,block-size) ... &rdquo; >

       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 MiB and the block size to
          256 KiB 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 KiB and a
          block size of 32 KiB.

       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 < &ldquo; name newname ; name2 newname2 ... &rdquo;>

          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.

       boinc_authenticator_file = <pathname>

          For  grid type boincjobs, specifies a path and file name of the authorization file that
          grants permission for HTCondor to use the BOINC service. There is no default value when
          not specified.

       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.

       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_block_device_mapping  = <block-device>:<kernel-device>,<block-device>:<kernel-device>,
       ...

          For grid type ec2jobs, specifies the  block  device  to  kernel  device  mapping.  This
          command is optional.

       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_iam_profile_arn = <IAM profile ARN>

          For grid type ec2jobs, an Amazon Resource Name (ARN)  identifying  which  Identity  and
          Access Management (IAM) (instance) profile to associate with the instance.

       ec2_iam_profile_name= <IAM profile name>

          For  grid  type  ec2jobs, a name identifying which Identity and Access Management (IAM)
          (instance) profile to associate with the 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_keypair = <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_keypair_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_parameter_names = ParameterName1, ParameterName2, ...

          For grid type ec2jobs, a space or comma separated  list  of  the  names  of  additional
          parameters to pass when instantiating an instance.

       ec2_parameter_<name> = <value>

          For  grid  type  ec2jobs,  specifies  the value for the correspondingly named (instance
          instantiation) parameter. <name>is the parameter name specified in the  submit  command
          ec2_parameter_names, but with any periods replaced by underscores.

       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_security_ids = id1, id2, ...

          For  grid  type  ec2jobs,  defines  the  list of EC2 security group IDs 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.

       WantNameTag = <True | False>

          For grid type ec2jobs, a job may request that its 'name' tag be (not) set by  HTCondor.
          If the job does not otherwise specify any tags, not setting its name tag will eliminate
          a call by the EC2 GAHP, improving performance.

       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.

       gce_auth_file = <pathname>

          For grid type gcejobs, specifies a path and file name of the  authorization  file  that
          grants  permission  for  HTCondor  to use the Google account. There is no default value
          when not specified.

       gce_image = <image id>

          For grid type gcejobs, the identifier of the virtual  machine  image  representing  the
          HTCondor  job  to  be run. This virtual machine image must already be register with GCE
          and reside in Google's Cloud Storage service.

       gce_json_file = <pathname>

          For grid type gcejobs, specifies the path and file name of a file  that  contains  JSON
          elements that should be added to the instance description submitted to the GCE service.

       gce_machine_type = <machine type>

          For  grid  type  gcejobs,  the  long  form  of  the  URL  that  describes  the  machine
          configuration that the virtual machine instance is to run on.

       gce_metadata = <name=value,...,name=value>

          For grid type gcejobs, a comma separated list of  name  and  value  pairs  that  define
          metadata for a virtual machine instance that is an HTCondor job.

       gce_metadata_file = <pathname>

          For  grid  type  gcejobs,  specifies  a  path  and  file name of the file that contains
          metadata for a virtual machine instance that is an HTCondor job. Within the file,  each
          name  and  value  pair  is  on its own line; so, the pairs are separated by the newline
          character.

       gce_preemptible = <True | False>

          For grid type gcejobs,  specifies  whether  the  virtual  machine  instance  should  be
          preemptible. The default is for the instance to not be preemptible.

       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, 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 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. Note that proxies are only valid for  a  limited  time.
          Condor_submit  will  not  submit  a job with an expired proxy, it will return an error.
          Also, if the configuration parameter  CRED_MIN_TIME_LEFT  is  set  to  some  number  of
          seconds,  and  if  the  proxy will expire before that many seconds, condor_submit  will
          also refuse  to  submit  the  job.  That  is,  if  CRED_MIN_TIME_LEFT  is  set  to  60,
          condor_submit   will refuse to submit a job whose proxy will expire 60 seconds from the
          time of submission.

          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. If a disk file will be transferred by HTCondor, then
          the first field should just be the simple file name (no path information).

          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 file name for the kernel image to use, this optional command may
          specify a path to a ramdisk  (  initrd  )  image  file.  If  the  image  file  will  be
          transferred  by  HTCondor,  then the value should just be the simple file name (no path
          information).

       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. If a
          kernel file will be transferred by HTCondor, then the value should just be  the  simple
          file name (no path information).

       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.

       COMMANDS FOR THE DOCKER UNIVERSE

       docker_image = < image-name >

          Defines the name of the Docker image that is the basis for the docker container.

       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 is a string that identifies the limit, or it is  a  ClassAd
          expression  that  evaluates  to a string, and it is evaluated in the context of machine
          ClassAd being considered as a match. Each item in the list also 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.

       concurrency_limits_expr = <ClassAd String Expression>

          A  ClassAd  expression  that represents the list of resources that this job needs after
          evaluation. The ClassAd expression may specify  machine  ClassAd  attributes  that  are
          evaluated    against   a   matched   machine.   After   evaluation,   the   list   sets
          concurrency_limits.

       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
          (note  that   coredumpsize  is  not  an  HTCondor parameter - it is an operating system
          parameter that can be viewed with the limitor ulimitcommand on Unix and in the Registry
          on Windows). A value of -1 results in no limits being applied to the core file size. If
          HTCondor is running as root, a coresizesetting greater than  the  system   coredumpsize
          limit  will  override the system setting; if HTCondor is notrunning as root, the system
          coredumpsize limit will override coresize.

       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 KiB.
          For example, for an image size of 8 MiB, 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.

       JobBatchName = <batch_name>

          Set  the  batch name for this submit. The batch name is displayed by condor_q-batch. It
          is intended for use by users to give meaningful names to their jobs  and  to  influence
          how  condor_qgroups  jobs for display. This value in a submit file can be overridden by
          specifying the -batch-nameargument on the condor_submit command line.

       job_lease_duration = <number-of-seconds>

          For vanilla, parallel, VM, and java universe jobs only, the duration in  seconds  of  a
          job lease. The default value is 2,400, or forty minutes. If a job lease is not desired,
          the value can be explicitly set to 0 to disable the job lease semantics. The value  can
          also  be  a ClassAd expression that evaluates to an integer. 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."   prepended   to  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 that begins with a '+' (plus) character instructs condor_submit  to  insert  the
          given  attributeinto  the  job  ClassAd  with  the  given  value.  Note that setting an
          attribute should not be used in place of one of the  specific  commands  listed  above.
          Often, the command name does not directly correspond to an attribute name; furthermore,
          many submit commands result in actions more complex than simply setting an attribute or
          attributes. See for a list of HTCondor job attributes.

       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.

       +PreEnv =  <environment_vars>

          Defines the environment for the prescript, presuming the Old environment syntax.

       +PreEnvironment =  <environment_vars>

          Defines the environment for the prescript, presuming the New environment syntax.

          Note that if both +PreEnv and +PreEnvironment are specified, the +PreEnvironment  value
          is used and the +PreEnv 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.

       +PostEnv =  <environment_vars>

          Defines the environment for the postscript, presuming the Old environment syntax.

       +PostEnvironment =  <environment_vars>

          Defines the environment for the postscript, presuming the New environment syntax.

          Note that if both +PostEnv and +PostEnvironment  are  specified,  the  +PostEnvironment
          value is used and the +PostEnv 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"
       +PreEnv = "one=1;two=\"2\""
       +PostCmd = "my_post"
       +PostArguments = "post\"arg1 'post&rdquo;ar g2'"
       +PostEnvironment = "one=1 two=\"2\""

       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:default initial value)  may  be  used
          anywhere in HTCondor submit description files to provide textual substitution at submit
          time. 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)  or   $(ClusterId)  macro  supplies  the value of the  ClusterId job ClassAd
          attribute, and the  $(Process) or  $(ProcId) 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.

          A default value may be specified, for use if the macro has no definition. Consider  the
          example

       D = $(E:24)

          Where   E  is  not  defined within the submit description file, the default value 24 is
          used, resulting in

       D = 24

          This is of limited value, as the scope of macro substitution is the submit  description
          file.  Thus,  either the macro is or is not defined within the submit description file.
          If the macro is defined, then the default  value  is  useless.  If  the  macro  is  not
          defined, then there is no point in using it in a submit command.

          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.

Submit Variables

       While   processing   the  queuecommand  in  a  submit  file  or  from  the  command  line,
       condor_submitwill set the values of several automatic submit variables so that they can be
       referred  to  by statements in the submit file. With the exception of Cluster and Process,
       if these variables are  set  by  the  submit  file,  they  will  not  be  modified  during
       queueprocessing.

       ClusterId

          Set  to  the integer value that the  ClusterId attribute that the job ClassAd will have
          when the job is submitted. All jobs in a single submit  will  normally  have  the  same
          value for the  ClusterId . If the -dry-runargument is specified, The value will be 1.

       Cluster

          Alternate  name for the ClusterId submit variable. Before HTCondor version 8.4 this was
          the only name.

       ProcId

          Set to the integer value that the  ProcId attribute of the job ClassAd will  have  when
          the  job  is  submitted.  The  value  will  start  at 0 and increment by 1 for each job
          submitted.

       Process

          Alternate name for the ProcId submit variable. Before HTCondor version 8.4 this was the
          only name.

       Node

          For  parallel  universes, set to the value #pArAlLeLnOdE# or #MpInOdE# depending on the
          parallel universe type For other universes it is set to nothing.

       Step

          Set to the step value as it varies from 0 to N-1 where N is the number provided on  the
          queueargument. This variable changes at the same rate as ProcId when it changes at all.
          For submit files that don't make use of the queue number option, Step will always be 0.
          For  submit  files  that  don't make use of any of the foreach options, Step and ProcId
          will always be the same.

       ItemIndex

          Set to the index within the item list being processed  by  the  various  queue  foreach
          options. For submit files that don't make use of any queue foreach list, ItemIndex will
          always be 0 For submit files that make use of a slice to select only some  items  in  a
          foreach list, ItemIndex will only be set to selected values.

       Row

          Alternate name for ItemIndex.

       Item

          when  a  queue  foreach  option is used and no variable list is supplied, this variable
          will be set to the value of the current item.

       The automatic variables below are set before parsing the submit file, and  will  not  vary
       during processing unless the submit file itself sets them.

       ARCH

          Set  to  the  CPU architecture of the machine running condor_submit . The value will be
          the same as the automatic configuration variable of the same name.

       OPSYS

          Set to the name of the operating system on the  machine  running  condor_submit  .  The
          value will be the same as the automatic configuration variable of the same name.

       OPSYSANDVER

          Set  to  the  name  and  major  version  of the operating system on the machine running
          condor_submit . The value will be the same as the automatic configuration  variable  of
          the same name.

       OPSYSMAJORVER

          Set to the major version of the operating system on the machine running condor_submit .
          The value will be the same as the automatic configuration variable of the same name.

       OPSYSVER

          Set to the version of the operating system on the machine running condor_submit  .  The
          value will be the same as the automatic configuration variable of the same name.

       SPOOL

          Set to the full path of the HTCondor spool directory. The value will be the same as the
          automatic configuration variable of the same name.

       IsLinux

          Set to true if the operating system of the machine running  condor_submit  is  a  Linux
          variant. Set to false otherwise.

       IsWindows

          Set to true if the operating system of the machine running condor_submit is a Microsoft
          Windows variant. Set to false otherwise.

       SUBMIT_FILE

          Set to the full pathname of the submit file  being  processed  by  condor_submit  .  If
          submit statements are read from standard input, it is set to nothing.

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       = vanilla

            Arguments      = 15 2000
            Output  = foo.out0
            Error   = foo.err0
            Queue

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

            Arguments      = 45 6000
            Output  = foo.out2
            Error   = foo.err2
            Queue

          Or you can get the same results as the above submit file by using a list  of  arguments
          with the Queue statement

            ####################
            #
            # submit description file
            # Example 1b: queuing multiple jobs with differing
            # command line arguments and output files, alternate syntax
            #
            ####################

            Executable     = foo
            Universe       = vanilla

            # generate different output and error filenames for each process
            Output  = foo.out$(Process)
            Error   = foo.err$(Process)

            Queue Arguments From (
              15 2000
              30 2000
              45 6000
            )

          *  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-2016  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.

                                            April 2018                           condor_submit(1)