INNWATCH.CTL(5) | File Formats Manual | INNWATCH.CTL(5) |
innwatch.ctl - control Usenet supervision by innwatch
The file /etc/news/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:
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 the control line. It is used as an internal state indicator and in ctlinnd messages to control the server. If omitted, 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:
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 directory, /var/spool/news.
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
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:
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.
@@@df .|awk 'NR==2 {print $4}'@lt@10000@throttle@No space @@@df -i .|awk 'NR==2 {print $4}'@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 df 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
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.
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.
Written by <kre@munnari.oz.au> for InterNetNews. This is revision 1.5, dated 1996/09/06.