glenda.party
term% ls -F
term% cat index.txt
QER(8)                      System Manager's Manual                     QER(8)



NAME
       qer, runq - queue management for spooled files

SYNOPSIS
       qer [ -q subdir ] [ -f file ] root tag reply args
       runq  [ -adsER ] [ -f file ] [ -q subdir ] [ -l load ] [ -t time ] [ -r
       nfiles ] [ -n nprocs ] root cmd

DESCRIPTION
       Qer creates a control and a data file in a queue directory.   The  con‐
       trol  file  contents  consist  of the tag, reply, and args separated by
       spaces.  The data file contains the standard input to qer.   The  files
       are  created in the directory root/subdir, where subdir is the argument
       to -q if present, else the contents of /dev/user.   The  names  of  the
       control  and data files differ only in the first character which is `C'
       and `D' respectively.  Mktemp(2) is used to create the actual names  of
       the control and data file.

       Some  commands,  such as fax (see telco(4)), must queue more files than
       just the data file.  Each file following a -f flag is copied  into  the
       queue  directory.   The names of the copies differ from the name of the
       data file only in the first character.  The first one  is  starts  with
       'F', the second 'G', etc.

       Runq  processes  the  files queued by qer.  Without the -a option, runq
       processes all requests in the directory root/subdir,  where  subdir  is
       the  argument  to  -q if present, else the contents of /dev/user.  With
       the -a it processes all requests.  Each request is processed by execut‐
       ing  the command cmd with the contents of the control file as its argu‐
       ments, the contents of the data file as its standard input,  and  stan‐
       dard error appended to the error file E.XXXXXX.

       The  action  taken by runq depends on the return status of cmd.  If cmd
       returns a null status, the processing is  assumed  successful  and  the
       control,  data,  and  error files are removed.  If cmd returns an error
       status containing the word the files are left to be  reprocessed  at  a
       later  time.   For  any other status, an error message is mailed to the
       requester and the files are removed.  Runq uses the reply field in  the
       control  file as a mail address to which to send an error notification.
       The notification contains the contents of the control file to  identify
       the failed request.

       To avoid reprocessing files too often, the following algorithm is used:
       a data file younger than one hour will not be processed  if  its  error
       file  exists  and was last modified within the preceding 10 minutes.  A
       data file older than one hour will not be processed if its  error  file
       exists  and  was  last modified within the preceding hour.  The -E flag
       causes all files to be reprocessed regardless of the file times.

       The -R flag instructs runq never to give up on a failed queue job,  in‐
       stead leaving it in the queue to be retried.

       The  -d option causes debugging output on standard error describing the
       progress through the queues.

       The -t flags specifies the number of hours that retries  will  continue
       after a send failure.  The default is 48 hours.

       The  -r  flag limits the number of files that are processed in a single
       pass of a queue.  Runq accumulates the entire  directory  containing  a
       queue  before  processing  any files.  When a queue contains many files
       and the system does not have enough memory, runq exits  without  making
       progress.   This  flag  forces runq to process the directory in chunks,
       allowing the queue to be drained incrementally.  It is most  useful  in
       combination with the -q flag.

       The  -s,  -n,  and -l flags are only meaningful with the -a flag.  They
       control amount of parallelism that is used when  sweeping  all  of  the
       queues.   The  argument  following  the -n flag specifies the number of
       queues that are swept in parallel; the default  is  50.   The  argument
       following the -l flag specifies the total number of queues that are be‐
       ing swept.  By default, there is no limit.  The number of active sweeps
       is  cumulative  over all active executions of runq.  The -s flag forces
       each queue directory to be processed by exactly one instance  of  runq.
       This  is  useful  on  systems that connect to slow external systems and
       prevents all the queue sweeps from piling up trying to  process  a  few
       slow systems.

       Runq is often called from cron(8) by an entry such as

              0,10,20,30,40,50 * * * * kremvax
                      runq -a /mail/queue /mail/lib/remotemail

       The  entry  must be a single line; it is folded here only so it fits on
       the page.

FILES
       root/user
              queue directory for user

       root/user/D.XXXXXX
              data file

       root/user/C.XXXXXX
              control file

       root/user/E.XXXXXX
              error file

       root/user/[F-Z].XXXXXX
              secondary data files

SOURCE
       /sys/src/cmd/upas/q

SEE ALSO
       mail(1)



                                                                        QER(8)