Provided by: htcondor_8.6.8~dfsg.1-2ubuntu1_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 ClusterIdidentifies 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_MACROSis  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 NameClassAd 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  NameClassAd 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 InteractiveJobis  set  to  Trueto  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/nullis 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 .classfile.

       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/nullis 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_DOMAINis  specified  by  the  HTCondor site administrator. If
          UID_DOMAINhas 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/nullis 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
             stdoutwill 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_UNIVERSEdefines 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. Kor KBindicates KiB, numbers of
          bytes. Mor MBindicates MiB, numbers of bytes. Gor GBindicates GiB, numbers of bytes.  Tor  TBindicates
          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. Kor KBindicates KiB, numbers of
          bytes. Mor MBindicates MiB, numbers of bytes. Gor GBindicates GiB, numbers of bytes.  Tor  TBindicates
          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
          SchedulerClassAd 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 RequestCpusis defined.

             3. Disk >=RequestDisk,  if  the  job  ClassAd  attribute  RequestDiskis  defined.  Otherwise,  Disk
             >=DiskUsage  is  appended to the requirements. The DiskUsageattribute 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 DiskUsageattribute represents the maximum  amount  of  total
             disk  space required by the job in kilobytes. HTCondor automatically updates the DiskUsageattribute
             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 RequestMemoryis 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_MBis  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 HoldReasonCodevalue 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_MBis 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 HoldReasonCodevalue 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
          FileSystemDomainas 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  stderris  streamed  back  to  the machine from which the job was submitted. If False,
          stderris stored locally and transferred back when the job completes. This command is  ignored  if  the
          job  ClassAd  attribute  TransferErris False. The default value is False. This command must be used in
          conjunction with error, otherwise stderrwill sent to /dev/nullon Unix machines and ignored on  Windows
          machines.

       stream_input = <True |False>

          If  True,  then stdinis 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 stdinwill
          be /dev/nullon Unix machines and ignored on Windows machines.

       stream_output = <True |False>

          If  True,  then  stdoutis  streamed  back  to  the machine from which the job was submitted. If False,
          stdoutis stored locally and transferred back when the job completes. This command is  ignored  if  the
          job  ClassAd  attribute  TransferOutis False. The default value is False. This command must be used in
          conjunction with output, otherwise stdoutwill sent to /dev/nullon 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_filebecomes
          input_filein 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_filebecomes output_filein 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 SPOOLconfiguration 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_RETRIESwill  be  used  for  the  maximum  number  of
          retries.

          The  combination  of the max_retries, retry_until, and success_exit_codecommands causes an appropriate
          OnExitRemoveexpression to be automatically generated. If retry command(s) and  on_exit_removeare  both
          defined,  the  OnExitRemoveexpression  will  be  generated  by  OR'ing  the  expression  specified  in
          OnExitRemoveand 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
          Truewill 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_removeexpression 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 *_holdexpressions take precedence
          over a *_removeexpressions.

          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 HoldReasonin the job ClassAd. If this expression is UNDEFINEDor 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 HoldReasonSubCodein the job ClassAd.  The  default  subcode  is  0.  The
          HoldReasonCodewill  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 *_holdexpressions take precedence
          over a *_removeexpressions.

          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 *_holdexpressions take precedence
          over a *_removeexpressions.

          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_TIMESLICEconfiguration 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 HoldReasonin the job ClassAd. If this expression is UNDEFINEDor 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 HoldReasonSubCodein the job ClassAd.  The  default  subcode  is  0.  The
          HoldReasonCodewill  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_TIMESLICEconfiguration 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 *_holdexpressions take precedence
          over   a   *_removeexpressions.   So,   the   periodic_removeexpression   takes   precedent  over  the
          on_exit_removeexpression, 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_TIMESLICEconfiguration 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.datasetinstead, 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.bigto
             /bigdisk/bigfileand  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_CREDENTIALSis 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 EMIis 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 Trueto 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 /tmpdirectory, 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 Truedoes  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 Truedoes 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 Falsefor 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 Truein 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 coredumpsizeis used (note that coredumpsizeis not an HTCondor parameter
          &ndash; 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 coredumpsizelimit will
          override the system setting; if HTCondor is notrunning as  root,  the  system  coredumpsizelimit  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  Xwill 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
          MachineAttrX0will 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 Undefinedor Errorresult, the value recorded in the job ad will be
          Undefinedor 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 Nameattribute 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 Nameattribute.

          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 Truetells 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  &mdash;  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 PreArgsgenerates a first argument of   pre"a1"  and  a  second  argument  of   pre'a2  .
       PostArgumentsgenerates 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  ClusterIdjob  ClassAd  attribute,  and  the  $(Process)or
          $(ProcId)macro supplies the value of the ProcIdjob 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 Eis 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 OpSysand Archattributes 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_pathis not defined, then the path /usr/foois 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 ClusterIdattribute 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 ProcIdattribute 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.out3for 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.0for the first run of this program (process 0).
          Stdin, stdout, and stderr will refer to in.1, out.1, and err.1for 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_removeexample: 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&ndash;Madison

Copyright

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

                                                  January 2020                                  condor_submit(1)