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 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 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
       consists	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 articles 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 ignored.

       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"
       commands	that require one.  More	strictly, it is	part of	the reason, as
       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  for  instance  "No  space"  if  the  server is rejecting
       articles	because	of a lack of filesystem	resources, or "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 "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
       order.  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 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  "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
       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
       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+14.3.quarterly>

home | help