Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
INNWATCH.CTL(5) 	   InterNetNews Documentation		 INNWATCH.CTL(5)

NAME
     innwatch.ctl - List of supervisory actions taken by innwatch

DESCRIPTION
     The  file	pathetc/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:

	 !state!when!condition!test!limit!command!reason

     or:

	 @state@when@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 in-
     clude 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  de-
     limiters,	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 the state to enter if the  condition  for  this  control
     line  is  true.   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  con-
     sists  of a list of states and special indicators, separated by whitespace.
     If the current state matches against any of the states 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).   The
     command  is executed with its current directory set to the news spool arti-
     cles directory (patharticles).

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

     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 "ctlinnd go" command will
	 be sent to the server, and innwatch will return  to  the  "run"  state.
	 The  "ctlinnd	throttle" command 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 via the
	 "ctlinnd pause" command.

     "shutdown"
	 Sends a "ctlinnd shutdown" command to the server.  It is for  emergency
	 use only.

     "flush"
	 Sends a "ctlinnd flush" command to the server.

     "go"Causes innwatch to send a "ctlinnd 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" com-
     mands that require one.  More strictly, it is part of the	reason,  as  in-
     nwatch 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 for instance "No space" if the server is rejecting articles because  of
     a	lack of filesystem resources, or "loadav" if the server is rejecting ar-
     ticles 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 "ctlinnd 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 (spool)
	 !!! 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 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  or-
     der.  It is easier to explain them, however, if they are described from the
     last up.

	 ! load ! load hiload ! loadavg ! lt ! 5 ! go ! loadav
	 : hiload : + load : loadavg : gt : 8 : throttle : loadav
	 / load / + / loadavg / gt / 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 throt-
     tled  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 "pause" to "throttle" 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 "ctlinnd 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 as-
     sumed 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
     The  "run"  state	is  not actually identified by the label with that three
     letter name, and using it will not work as expected  ("go"  is  the  wanted
     state in that case).

     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.	Rewritten  into  POD  by
     Julien Elie.

SEE ALSO
     ctlinnd(8), inndf(8), news.daily(8), rc.news(8).

INN 2.8.0			   2021-10-21			 INNWATCH.CTL(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=innwatch.ctl&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help