Provided by: inn2_2.6.4-2build4_amd64 bug

NAME

       innwatch.ctl - control Usenet supervision by innwatch

DESCRIPTION

       The  file  <pathetc  in  inn.conf>/innwatch.ctl  is  used  to determine what actions are taken during the
       periodic supervisions by innwatch.

       The file consists of a series of lines; blank lines and lines beginning with a number  sign  (``#'')  are
       ignored.  All other lines consist of seven fields, each preceded by a delimiting character, for example:

              :label:state:condition:test:limit:command:reason
       or
              @label@state@condition@test@limit@command@reason

       The delimiter can be any one of several non-alphanumeric characters that does not appear elsewhere in the
       line; there is no way to quote it to include it in any of the fields.  Any of ``!'', ``,'', ``:'', ``@'',
       ``;'',  or ``?'' is a good choice.  Each line can have a different delimiter; the first character on each
       line is the delimiter for that line.  White space surrounding delimiters, except  before  the  first,  is
       ignored,  and  does  not form part of the fields; white space within fields is permitted.  All delimiters
       must be present.

       The first field is a label for this control line.  It is used as  an  internal  state  indicator  and  in
       ctlinnd messages to control the server.  If this field is empty, the line number is used.

       The  second  field  specifies when this control line should be used.  It consists of a list of labels and
       special indicators, separated by whitespace.  If the current state matches against any of the  labels  in
       this field, this line will be used as described below.  The values that may be used are:

       -      This  line  matches  if the current state is the same as the label on this line, or if the current
              state is ``run'', the initial state.  This is also the default state if this field is empty.

       +      This line matches if the current state is ``run''.

       *      This line always matches.

       label  This line matches if the current state is the specified ``label''.

       -label This line matches if the current state is not the specified ``label''.

       The third field specifies a shell command that is invoked if this line matches.  Do  not  use  any  shell
       filename  expansion characters such as ``*'', ``?'', or ``['' (even quoted, they're not likely to work as
       intended).  If the command succeeds, as indicated by its exit status, it is expected to  have  printed  a
       single  integer to standard output.  This gives the value of this control line, to be used below.  If the
       command fails, the line is ignored.  The command is executed with its current directory set to  the  news
       spool articles directory, <patharticles in inn.conf>.

       The fourth field specifies the operator to use to test the value returned above.  It should be one of the
       two  letter  numeric  test operators defined in test(1) such as ``eq'', ``lt'' and the like.  The leading
       dash (``-'') should not be included.

       The fifth field specifies a constant with which to compare the value using  the  operator  just  defined.
       This is done by invoking the command:

              test value -operator constant

       The line is said to ``succeed'' if it returns true.

       The  sixth  field specifies what should be done if the line succeeds, and in some cases if it fails.  Any
       of the following words may be used:

       throttle
              Causes innwatch to throttle the server if this line succeeds.  It also sets the state to the value
              of the line's label.  If the line fails, and the state was previously equal to the label  on  this
              line  (that is, this line had previously succeeded), then a go command will be sent to the server,
              and innwatch will return to the ``run'' state.  The ``throttle'' is only performed if the  current
              state  is  ``run'' or a state other than the label of this line, regardless of whether the command
              succeeds.

       pause  Is identical to ``throttle'' except that the server is paused.

       shutdown
              Sends a ``shutdown'' command to the server.  It is for emergency use only.

       flush  Sends a ``flush'' command to the server.

       go     Causes innwatch to send a ``go'' command to the server and to set the state to ``run''.

       exit   Causes innwatch to exit.

       skip   The remainder of the control file is skipped for the current pass.

       The last field specifies the reason that is used in  those  ctlinnd  commands  that  require  one.   More
       strictly,  it  is part of the reason — innwatch appends some information to it.  In order to enable other
       sites to recognize the state of the local innd server, this field should usually be set to one of several
       standard values.  Use ``No space'' if the server is rejecting articles because of a  lack  of  filesystem
       resources.  Use ``loadav'' if the server is rejecting articles because of a lack of CPU resources.

       Once  innwatch  has  taken  some  action  as  a consequence of its control line, it skips the rest of the
       control file for this pass.  If the action was to restart the server (that is, issue a  ``go''  command),
       then  the  next  pass will commence almost immediately, so that innwatch can discover any other condition
       that may mean that the server should be suspended again.

EXAMPLES

              @@@inndf .@lt@10000@throttle@No space
              @@@inndf -i .@lt@1000@throttle@No space (inodes)

       The first line causes the server to be throttled if  the  free  space  drops  below  10000  units  (using
       whatever units inndf(8) uses), and restarted again when free space increases above the threshold.

       The second line does the same for inodes.

       The  next  three  lines act as a group and should appear in the following order.  It is easier to explain
       them, however, if they are described from the last up.

              !load!load hiload!loadavg!lt!5!go!
              :hiload:+ load:loadavg:gt:8:throttle:loadav
              /load/+/loadavg/ge/6/pause/loadav

       The final line causes the server to be paused if innwatch is in the ``run'' state and  the  load  average
       rises  to,  or above, six.  The state is set to ``load'' when this happens.  The previous line causes the
       server to be throttled when innwatch is in the ``run'' or ``load'' state,  and  the  load  average  rises
       above eight.  The state is set to ``hiload'' when this happens.  Note that innwatch can switch the server
       from  ``paused''  to ``throttled'' if the load average rises from below six to between six and seven, and
       then to above eight.  The first line causes the server to be sent a ``go'' command if innwatch is in  the
       ``load'' or ``hiload'' state, and the load average drops below five.

       Note  that  all  three  lines assume a mythical command loadavg that is assumed to print the current load
       average as an integer.  In more practical circumstances, a pipe of uptime into awk is more likely  to  be
       useful.

BUGS

       This  file must be tailored for each individual site, the sample supplied is truly no more than a sample.
       The file should be ordered so that the more common problems are tested first.

       The ``run'' state is not actually identified by the label with that three letter name, and using it  will
       not work as expected.

       Using an ``unusual'' character for the delimiter such as ``('', ``*'', ``&'', ```'', ``´'', and the like,
       is likely to lead to obscure and hard to locate bugs.

HISTORY

       Written by <kre@munnari.oz.au> for InterNetNews.  This is revision 5909, dated 2002-12-03.

SEE ALSO

       inn.conf(5), innd(8), inndf(8), ctlinnd(8), news.daily(8).

                                                                                                 INNWATCH.CTL(5)