Provided by: nn_6.7.3-12_amd64 bug

NAME

       nnadmin - nn database administration

SYNOPSIS

       nnadmin [ commands ]

DESCRIPTION

       nnadmin  is  a  control  program  for  the  nnmaster(1M)  daemon  which  is  responsible for building and
       maintaining the database used by the nn(1) news reader.

       nnadmin allows you to display extracts from the log file, display the "raw"  contents  of  the  database,
       make  consistency  checks  on  the  database, instruct the running nnmaster to expire one or more groups,
       alter the options of the running nnmaster, and much more.

       nnadmin runs in two modes: interactive and non-interactive.

       In interactive mode, simple one line menus are used to show  the  available  operations  which  are  then
       selected  by  typing  the  letter  associated  with the command (normally the first letter in the command
       name).

       In non-interactive mode, the commands argument will  be  used  as  a  series  of  key-strokes  which  are
       interpreted exactly as if they were typed in from the keyboard in interactive mode.  For example, to stop
       the nnmaster, the following invocation of nnadmin can be used:
            nnadmin MK
       which will select the (M)aster submenu from the main menu, and then the (K)ill entry from the submenu.

       In non-interactive mode, the menus are not displayed and the commands are not echoed!  nnadmin will  exit
       when  there are no more key-strokes to be read from the commands argument.  It is not possible to specify
       a group name in the commands argument, so the functionalities of nnadmin that relates to specific  groups
       are only available in interactive mode.

       Some  "dangerous"  commands  will  require  that you confirm them by following them by "Y" on the command
       line.  The most noteable are IY (initialize database) and EY (expire all groups).  These commands will be
       marked with a [Y] following the command name.

       You can also invoke an interactive nnadmin using the :admin command in nn.

SHELL ESCAPES

       At all prompts you can hit `!' to spawn a subshell.

       The  working  directory  of  the subshell will be changed to the database directory when invoked from the
       MASTER or DUMP menus, and it will changed to the group's spool directory (if it exists) when invoked from
       the GROUP menu.

MAIN MENU

       From the main menu (identified by the ADMIN prompt) you can select the following operations:

       C)onf
              Show current configuration parameters such as directories, files, programs, network usage, etc.

       E)xpire [Y]
              Send a request to the nnmaster daemon to schedule (and run) expire for all groups in the database.

       G)roups
              Enter the GROUP submenu.

       I)nit [Y]
              Send a request to the nnmaster daemon to recollect all groups in the database.

       L)og
              Enter the LOG submenu.

       M)aster
              Enter the MASTER submenu.

       Q)uit
              Quit nnadmin.

       S)tat
              Print general statistics about the database.  See the section on Database Statistics below.

       U)pdate
              Update the incore copy of the database master index.

       V)alidate
              Make  a  thorough consistency check on the database.  If inconsistencies are found in a group, you
              will be asked whether a request should be sent to the nnmaster daemon to recollect the  group  (in
              non-interactive mode, requests will be sent automatically for all corrupted groups).

       W)akeup
              Send  a  wakeup  signal to the nnmaster daemon to have it receive messages sent to it, perform the
              required actions, and then collect articles as necessary.

       Z (silent validation)
              This operation is identical to the Validate operation, expect that no output  is  produced  during
              the consistency check; this operation is used by the nnmaster to execute the -C option.

THE MASTER MENU

       The master menu (identified by the MASTER prompt) provides access to overall database information, and to
       send control messages to the nnmaster daemon.

       C)heck In interactive mode and in verbose batch mode  (nnadmin  MC),  print  a  message  telling  whether
              nnmaster  is  running  or not.  In silent batch mode (nnadmin =MC) exit with a status code of 0 if
              nnmaster is running and 1 otherwise; this may be useful is administrative scripts.

       D)ump  Enter the DUMP submenu.

       F)iles
              Print a listing (using ls(1)) of all the data and index files in the database.

       G)roup
              Print the master index entry for a single group identified by its internal group number.

       K)ill
              Stop the nnmaster when it has finished its current task.

       O)ptions
              Change the runtime options of the running nnmaster daemon.  Currently, only the value  of  the  -r
              and -e options can be modified.

       S)tat
              Print general statistics about the database.  See the section on Database Statistics below.

       T)race
              Turn the trace option -t on or off in the running nnmaster.

THE DUMP MENU

       The  dump  menu  (identified  by  the DUMP prompt) allows you to print the master index entry for various
       selections of groups in the database.

       A)ll
              Print all groups in the database.

       E)mpty
              Print the empty groups in the database.

       H)oles Print the groups where the `min' field in the active file is not the first article  saved  in  the
              database  (because  it  doesn't  exist or because it is ignored for some other reason, e.g. bad or
              old).

       I)gnored
              Print groups which are ignored, either in the GROUPS file  or  because  of  some  other  condition
              (mainly no spool directory).

       N)on-empty
              Print the non-empty groups in the database.

       V)alid Print the groups which are present in the active file.

       in(W)alid
              Print the groups in the database which are not present in the active file.

THE LOG MENU

       The  log  menu (identified by the LOG prompt) enables you the extract specific entries from the log file,
       and to truncate the log file.

       The entries in the log file share the following format:
            <class>: <date> <time> (<user>): <message>
       where <class> identifies the message class, the <date> and <time> specify when the entry  was  made,  the
       <user>  specifies  who  created  the entry (the letter "M" denote the nnmaster), and the <message> is the
       text of the entry.

       To extract the log file entries of a specific class, simply enter the letter identifying the class:

       A - admin to master communication
              This class of messages are related to the sending of messages  from  an  nnadmin  program  to  the
              nnmaster daemon.

       B - bad articles
              Reports about bad articles which have been ignored or removed (controlled by the -b and -B options
              to nnmaster).

       C - collection statistics
              Statistics about collection of new articles.  The message has the format:
                   Collect: nnn art, ppp gr, ttt s
              meaning that nnn articles in ppp groups were collected in ttt seconds (real time).

       E - fatal errors
              Fatal errors encountered during operation.  These errors require manual intervention to  be  fixed
              (some  of  the fatal errors occur if thing that "cannot happen" happens anyway, and may indicate a
              bug in the software).

       M - nnmaster messages.
              Master start/stop messages.

       N - NNTP related messages
              Various messages related to the NNTP part of the  nnmaster,  mostly  about  lost  connections  and
              failed attempts to connect to the NNTP server.  These messages should only appear if you use NNTP,
              and your NNTP server is down for some reason.

       O - old articles
              Reports related to ignoring (and removing) old articles when building the database (controlled  by
              the -O and -B options to nnmaster).

       R - reports
              Non-fatal error which enables the nnmaster to continue operation, but may prevent a user to run nn
              (file access problems).  Reported problems should be checked.  The most common report message will
              probably be
                   some.group: no directory
              which  indicates  that  the spool directory for that group has disappeared (most likely because it
              has been rmgroup'ed).

       T - trace output
              Messages produced as a result of using the -t option on  the  nnmaster.   This  is  primarily  for
              debugging purposes.

       U - usage statistics
              If  nn is compiled with the STATISTICS option enabled, an entry will be made in the log file every
              time a user has spent more than five minutes on news reading.  The message will have the following
              format:
                   USAGE hours.minutes
              Since  it  is  possible  to  suspend  nn, or leave the terminal while nn is active, nn tries to be
              intelligent when it calculates the usage time so it will reflect the actual  time  spent  on  news
              reading.  The usage statistics can be summarized using the nnusage(1M) program.

       V - validation errors
              When  inconsistencies  are detected in the database during validation, an entry for each corrupted
              group will be entered in the log file.

       X - expire statistics
              Messages similar to the Collect statistics reporting the result of running expire on the database.
              Reports  related  to  ignoring,  removing,  renumbering, and reactivation of groups are also given
              class X.

       To extract a specific entry class, grep(1) is used, so it may take a while on a large log file.

       There are also a few special operations on the log file:

       G)roup
              Extract the entries which refers to a specified group.

       (1-9) tail
              Invoke tail(1) to extract the last 10-90 entries in the log file.

       space
              Equivalent to 1 (list last 10 lines of log).

       (.) all
              Display the complete log file.

       (@) clean [Y]
              Move the Log file to Log.old, and create a new empty Log file.  If you want to clean out  the  old
              log file as well, simply repeat the clean operation (this will result in an empty Log.old file.)

THE GROUP MENU

       When you enter the group menu (identified by the GROUP prompt), nnadmin will prompt you for the name of a
       news group, which you can enter with the usual completion feature described in the nn(1) manual.  You can
       then perform the following operations on the specified group:

       C)lear_flag
              Clear a group specific flag.  See the section on group flags below.

       D)ata
              Dump the contents of the data file containing the extracted article headers for the group.

       E)xpire
              Request the nnmaster to run expire on the group.

       F)iles
              List the files (using ls(1)) containing the index and data for the group.

       G)roup
              Switch to another group.

       H)eader
              Dump the master index entry for the group.

       R)ecollect
              Request the nnmaster to recollect all articles in the group.

       S)et_flag
              Set a group specific flag.  See the section on group flags below.

       V)alidate
              Perform validation on the group's database information.

       Z)ap [Y]
              Remove group from news system - this will be done by running the rmgroup program which must reside
              in the NEWS_LIB directory.  Of course, this should be done with great caution.

INDIVIDUAL GROUP FLAGS

       You can set and clear the following flags for individual  groups  to  control  the  future  behaviour  of
       nnmaster on that group.

       Notice  that  these  flags  will  be  reset to their default value if you reinitialize the database using
       nnmaster -I.  To change these flags permanently, they should be set or cleared in the GROUPS file.

       A)lways_digest
              Normally, nnmaster will only attempt to split digests into individual articles if  it  can  easily
              recognize  an  article as a digest.  This requires that the word "digest" appears somewhere in the
              subject line, and that one of the first few lines in the body of the article loosely  matches  the
              subject.   A  few  news  groups  frequently  receives  digests  which  break  one or both of these
              requirements.  To have nnmaster split these digests into individual articles anyway, you can  turn
              on  the  "always  digest"  flag  on  these  news groups.  This will instruct nnmaster to treat all
              articles in the group as digests (naturally, articles which are then found not  to  contain  other
              articles are still treated as normal articles.)

       C)ontrol
              This  is  a  special flag for the control group.  It indicates that the "Newsgroups:" field in the
              article header cannot be trusted (it does not specify the groups to which  the  article  has  been
              posted.)

       D)irectory missing
              This  flag  indicates  that  the spool directory for the news group cannot be found (the group has
              probably been removed with rmgroup(1M)).  It is set automatically be the  nnmaster  if  it  cannot
              access  the  directory.  When the flag is set, nnmaster completely ignores the group, so it can be
              used to disable news collection in specific groups.  If you recreate the group  or  the  directory
              manually, you must also clear this flag to have the nnmaster recognize the group again.

       M)oderated
              Indicates  that  the group is moderated.  This flag is normally initialized automatically from the
              active file, and it should not be changed lightly.

       N)ever_digest
              This is the opposite of the "always digest" flag; when set, the nnmaster  will  never  attempt  to
              split any articles in that group into subarticles.

DATABASE STATISTICS DISPLAY

       When  you  select  the (S)tat operation in the main or master menus, you will get some general statistics
       about the database:

       initialized
              The time when the database was last rebuild using nnmaster -I.

       last_scan, last_size
              The time stamp on the active file and its size the last time the nnmaster read it.

       no of groups
              The total number of groups in the database.

       Articles
              The total number of articles in all groups.  This is not an exact number, because  it  will  count
              split  digests  as  a single article (making the number too small), and it may count some articles
              that have been expired (making the number too large).

       Disk usage
              The total number of (1 kbyte) disk blocks occupied by the database.

MASTER INDEX ENTRIES

       The master index entries displayed when you select the (H)eader operation in the master and  group  menus
       contain the following information:

       group_name  group_number
              The  first line of the display will show the name of the group and the internal group number which
              is used to identify the group in the database.

       first/last art
              This is the numbers of the first and last article that are currently stored in the database.

       active info
              This is the numbers of the first and last article in the news system as read from the active file.
              They  will  normally match the numbers above, but they may differ while the nnmaster is working on
              the group (or it has not yet collected all the articles in the group).

       Offsets: index->..., data->...
              These values show the starting position for the next write operation on the index and data  files.
              They  are  primarily used for consistency checking and recovery after a system crash, but after an
              "expire by rewrite" operation (expire method 2) which is performed "in-situ", the data  and  index
              files may physically be longer than the actual data stored in them.

       Flags:
              This  shows  the current flags set for this group.  If no flags are set, the field is omitted from
              the display.  One extra flag which was not explained above is the BLOCKED flag; it is a  temporary
              locking flag set on a group by the nnmaster while it is updating the database files for that group
              to prevent nn clients to access that group.

RAW DATABASE DISPLAY

       When you select the (D)ata operation on the group menu, you will get a combined display of the  raw  data
       and  index files for that group.  The index file contains a single 32 bit value for each existing article
       number.  This value is an offset into the data file pointing to the header for the corresponding article.

       When nn want to access the article from number N to the last article, it looks up the offset for  article
       number N in the index file, and uses this as the starting point for reading article header information in
       the data file.  It then simply reads to the end of the  data  file  in  which  the  article  headers  for
       articles number N+1, N+2, and so on follows immediately after the header for article number N.

       The  article header information is presented in a very terse form; each of the output lines are described
       below for reference purposes:

       offset = xxxx    , article # = nnnnn   (type)
              This shows the offset into the data file and the article number.  The  offset  is  stored  in  the
              index  file  for  quick  access.   If no type is printed it is a normal article.  Other types are:
              "digest header" and "digest sub-article".

       xpost(count):  nnn, nnn, nnn, ...
              Cross-postings to other groups are encoded as a list of internal group numbers.

       ts=nn hp=nn fp=nn lp=nn ref=nn[+Re] lines=nn
              These values are used by nn to sort, present, and access an article:
              ts is the time stamp on the article; it is a simple encoding of the posting date and time found in
              the Date: field.
              hp,  fp,  and lp are offsets into the file containing the article text: the header position, first
              text position, and last text position.  The first will be zero for normal articles,  but  not  for
              articles in a split digest.  The last will be equal to the length of the file for normal articles,
              but not inside digests.
              ref is the number of references on the Reference: line.  If "+Re" follows the number, the  subject
              line contained a "Re:" prefix which has been removed.

       Sender(length): name
              The  name  of the sender in "ready to print" format, i.e. reduced to 16 characters as explained in
              the nn manual.

       Subj(length): subject
              This is the full subject line from  the  article  header  (except  for  Re:  prefixes  in  various
              formats).

FILES

       The  $db,  $lib,  and  $news  used  below  are synonyms for the DB_DIRECTORY, LIB_DIRECTORY, and the news
       system's lib directories respectively.
       $db/MASTER        Database master index
       $db/GROUPS        News group names in MASTER file order
       $db/DATA/nnn.x    Index file for group number nnn
       $db/DATA/nnn.d    Data file for group number nnn
       $master/GATE      Message channel from nnadmin to nnmaster
       $master/MPID      The process id of the nnmaster daemon.
       $Log              The log file (truncate it regularly!)

       The MASTER file contains a record for each news group, occurring in the same sequence as the group  names
       in  the  GROUPS  file.   The  sequence  also  defines the group numbers used to identify the files in the
       database and in a few other places.

       The GATE file will be created by nnadmin when needed, and removed  by  nnmaster  when  it  has  read  it.
       Therefore,  to  send  a  message  to  the  nnmaster requires that you are allowed to write in the $master
       directory.

SEE ALSO

       nn(1), nncheck(1), nngrep(1), nntidy(1)
       nnquery(1M), nnusage(1M), nnmaster(8)

WARNINGS

       The GATE file is created with the owner and modes of the user that runs nnadmin which may cause  problems
       if  the  owner  of the nnmaster process (normally "news") is not allowed to read the created GATE file (a
       "umask" of 022 is ok.)  Unless you allow ordinary users to create files in the LIB  directory  where  the
       GATE  file  resides, only the owner of the directory (normally "news") and "root" can use nnadmin to send
       messages to the nnmaster.  However, to send a wakeup signal to the master, anybody can run
            nnmaster -w

BUGS

       The user interface is completely out of line with the rest of the nn family, and the way to  run  nnadmin
       in  the non-interactive mode is a bit bizarre.  This is not likely to change, because I believe there are
       more important things to do!

AUTHOR

       Kim F. Storm, Texas Instruments A/S, Denmark
       E-mail: storm@texas.dk