INN Maintenance
Jürgen Schröder
aktuelle Zeile
Es ist INN Version 1.4 von Rich $altz installiert. Die NOV-Overview Database ist aktiviert.
Das ganze läuft auf einer Sun Sparcstation 10 unter SunOS 3.1.2. (heutzutage sollte es keine Probleme bei der Installation unter Solaris geben).
Einleitende Beschreibung einiger Begriffe
- Newsfeed der Zustrom von Newsartikeln
- nntp host Newsserver
- Feeder der Rechner der unserem Rechner Newsartikel liefert, Gegensatz zu Reader
- Reader
- Rechner die vom Newsserver lesen dürfen
- Programm zum Lesen von Newsartikeln, auch Newsreader
- Newsmaster Verwalter des Newsservers, Username news, alle Arbeiten werden unter diesem Username durchgeführt; ausser dem Starten des Newsservers, dies muss root machen
- Control-Messages Newsartikel die durch die Newsgruppe control kommen und bestimmte Aktionen auslösen, welche Aktionen bestimmt das File ~news/control.ctl. Sie fordern zu folgenden Aktionen auf:
- Es sind einzelne Gruppen zu verändern:
- Löschen von einzelnen Gruppen: subject: rmgroup alt.lösch.diese.group
- Neuanlegen von Gruppen: subject: newgroup alt.neue.group
- Ändern des Status von Gruppen moderiert (m) bzw. unmoderiert (y)
- Es kommen Listen mit z.Z. aktuellen Gruppen einer Hierarchie z.B. alt.*:mit deren Hilfe die eigene Liste abgeglichen werden soll
- active-File Enthält die Liste der aktiven Newsgruppen des Servers, höchste und niedrigste Artikelnummer, den Typ (moderiert/unmoderiert). Diese Datei bestimmet ob ein Artikel vom Feeder abgenommen wird. (man active)
- newsgroups-File Enthält Name und Thema der Newsgroups, der Inhalt dieses File wird von vielen Newsreadern angezeigt.
- history-File enthält alle im Newsspool gespeicherten Artikel. Jedem Artikel entspricht eine Zeile. Jede Zeile besteht aus drei Feldern:
<Message-ID> date files
Das Date-Feld enthält Ankunfts-Zeit und ggf. Expiration-Time in Ticks (man 2 gettimeofday). Das Files-Feld enthält die Newsgroups mit zugehörigen Artikel-Nummern. (man 5 history) - ctlinnd Programm durch dass dem laufenden innd-Demon Änderungen übermittelt werden
- expire Mechanismus die Newsartikel nach gegebener Zeit (festgelegt im File: ~news/expire.ctl) zu löschen, gleichnamiges Programm wird durch script news.daily (welches per Cron täglich um Mitternacht gestartet wird) aufgerufen wird. Wird von expire.ctl (man expire.ctl) kontrolliert.
- innd Demon der die einkommenden Abfragen (von Feeder und Reader) annimmt und dann separate Prozesse startet. (man ctlinnd)
- throttle Modus in dem der Newsserver keine neuen Artikel mehr akzeptiert, bei einem Fehler oder während der Maintenance
Tägliche Arbeit
Einloggen unter Username news. Man sollte gleich zwei xterm-Sessions starten, da man sich so sehr viel Schreibarbeit durch Cut&Paste-Operationen sparen kann.Als User news sind alle benötigten Programme und Scripts im PATH enthalten!!
Lesen der Messages an News (elm ist installiert). Die Messages anschauen und auswerten. Nach Abarbeiten der mails diese und die temporär angelegten Files gleich löschen, um den Überblick zu behalten.Es gibt drei Message Typen die von INN ge- bzw. weitergeschickt werden:- NewsDaily-Report, das ist die Statistik ueber das Expire, den Plattenplatz, Verbindungen, welche Artikel sind nicht genommen worden und evt. Fehlermeldungen. Den Platz auf den Harddisks im Auge behalten !
- Messages von INN, i.d.R. daß ein Artikel einen kaputten Header hat; keine Aktion notwendig
- Control-Messages: Neue Gruppen, Auflösung von Gruppen oder Änderungen des moderiert/unmoderiert-Status, Bearbeitung der Control-Messages
- Es sind einzelne Gruppen zu verändern:
- Löschen von einzelnen Gruppen: subject: rmgroup alt.lösch.diese.group
Löschen der Gruppe aus dem active-File, hierbei wird innd automatisch gethrottled, ein Renumber des active-Files vorgenommen und danach wieder innd freigegeben:ctlinnd rmgroup alt.lösch.diese.group
Der innd-Demon antwortet mit: "Ok" oder "No such group"
Dann nachsehen ob diese Group in dem newsgroups-File vorkommt:
grep alt.lösch.diese.group newsgroups
falls ja, dann mit
grep -v alt.lösch.diese.group newsgroups > ng.tmp
mv ng.tmp newsgroups
alle Zeilen ausser der zu löschenden in ein neues File listen lassen und dies dann zurückbenennen. Anschließend die Message löschen.
- Neuanlegen von Gruppen
Einfügen der Gruppe ins active-File, hierbei wird innd automatisch angehalten und danach wieder freigegeben. Hierbei werden zwei Gruppentypen verwendet moderiert (m) oder unmoderiert(y). Der Initiator der Gruppe sollte angegeben werden. ctlinnd newgroup alt.neue.group Typ Initiator@host.domain
Der innd-Demon antwortet mit: "Ok".Dann die Zeile mit dem Thema der Gruppe an das newsgroups-File, durch Auschneiden der Zeile aus der Message und mit echodranhängen:
echo "hier Groupname und -thema hinpasten" >> newsgroups
Anschliesend die Message löschen.
- Ändern des Typs der Gruppe moderiert (m) bzw. unmoderiert (y):
ctlinnd changegroup news.gruppe neuerTyp
Anschliesend die Message löschen.
- Es kommen Listen mit z.B. allen Gruppen in der Hierarchie cl.*:
Speichern der Mail in einem File z.B. Name cfile. Löschen des Headers mit einem Editor (joe ist installiert!) Übrig bleiben soll:
/usr/local/news/bin/control/docheckgroups <<-EOF-
cl._vorschau Zusammenfassung von /CL - Material
cl._wichtig Die Brett- und Systemliste des Cl-
cl.adressen.allgemein Fuer Mitmacher und Mehrwissenwolle
cl.adressen.e-mail Uebers Netz erreichbar
...
zer.z-netz.wissenschaft.psychologie
zer.z-netz.wissenschaft.soziologie
zer.z-netz.wissenschaft.technik
-EOF-
Dies füttert man in eine Shell und lenkt die Ausgabe in ein File:
sh cfile > cfile.vorher
Falls das File cfile.vorher leer ist, hat sich keine Änderung ergeben. Ansonsten ist das File cfile.vorher ist ein Script mit Befehlen der Art:
ctlinnd rmgroup xyz.abc
ctlinnd newgroup yyz.uvw
ctlinnd changegroup xyz.dfg y
Zusätzlich ist noch einige Information auskommentiert, z.B. die Themen der neuangelegten Gruppen. Man füttert das File cfile.vorher in eine Shell um die Befehle auszuführen:
sh cfile.vorher
Danach löscht man aus dem File newsgroups die Zeilen mit den Themen der gelöschten Gruppen, siehe oben.
Die Themen der neuhinzugekommenen Gruppen extrahiert man mit dem Editor aus dem File cfile.vorher (bzw. alles andere wird gelöscht) und hängt diese Zeilen an das File newsgroups an:
cat cfile.vorher >> newsgroups
Dann starten man nochmal das File cfile um zu ueberprüfen ob alles nun auf dem Soll-Stand ist:
sh cfile > cfile.nachher
Dieser File cfile.nachher sollte leer sein, ansonsten den Anweisungen darin folgen (wie bei cfile.vorher) und u.U. hinterher nochmal kontrollieren. Nun sollten alle temporären Files gelöscht werden:
rm cfile*
Sonstiges
Programme in /usr/local/news/bin
- getlist: holt active.*, newsgroups und sonstige Files von anderem nntp-Server
getlist -h host waswillich > outfile
Plattenaufteilung für News auf der Sun
Filesystem kbytes used avail capacity Mounted on Gruppen
/dev/sd0g 204031 164137 19491 89% /usr
/dev/sd1b 481823 374277 59364 86% /usr/local
/dev/sd4a 963662 803674 63622 93% /var/spool/news restliche
/dev/sd6a 963662 632912 234384 73% /mnt/sd6a-1.0GB rec.* + soc.*
/dev/sd7a 963662 808531 58765 93% /mnt/sd7a-1.0G alt.*
Directories, die von INN benutzt werden
Von Newsreadern und von den Controll-Messages wird folgende Aufteilung der Directories erwartet:
/
|
+-usr
| +-local
| +--news INN Configurationsfiles insbes. history, active
| | | diese sind auch hier beim updaten kurz doppelt da!
| | |
| | +--bin Programme zum taeglichen Umgang mit INN
| | | |
| | | +--control Programme zum Aendern der Gruppen
| | | +--rnews Uebertragung der Artikel zu anderen feeds
| | |
| | +--innd Hier werden die INND PID's gehalten
| | |
| | +--src INN Programm Source
| | |
| | +--script Scripts
| | |
| | +--tmp
| |
| +--etc Starten von INND (als ROOT!)
| |
| +--bin allgemeine ausfuerbare Programme (PD, bzw GNU): make,
| gzip, patch, grep, perl
+-var
| +-spool
| | +-news Newsartikel, jede Gruppe entspricht einem
| | Directory; mit gleicher Hierachieaufteilung.
| |
| +-adm Der File "messages" enthaelt grobe Fehlermessages (syslog)
| |
| +-log
| | +-news Hier werden alle Meldungen in verschiedenen Files gesammelt:
| | | Feed-Kontakte, Errormeldungen, Gruppenaenderungen
| | | Durch newsdaily wird die derzeitigen Files in das
| | | Directory OLD kopiert und alles neu protokolliert.
| | |
| | +-OLD Hier werden fuenf Generationen der Messages gehalten.
| | Das Update erfolgt per Rotationsverfahren.
| |
| +-tmp Wird z.B. von sort benutzt
|
+-tmp
Prüfen ob INN läuft
Das Script psn zeigt die Prozesse vom User news an:
PID TT STAT TIME COMMAND
340 ? S 215:50 /usr/local/etc/innd -p4 -r -i0
390 ? IW 8:40 /bin/sh /usr/local/news/bin/innwatch
26630 ? IWN 0:00 sh -c
26640 ? S N 0:03 innxmit -a news.th-darmstadt.de /var/spool/news/out.going/n
26955 ? S 0:00 -pc020a.wiwi.uni-marburg.de ARTICLE (in.nnrpd)
27073 ? IW 0:00 sleep 600
7356 p0 IW 0:00 -csh (csh)
27075 p1 S 0:00 -csh (csh)
27082 p1 R 0:00 ps -x
INN ist: innd -p4 ...INNWatch schaut (u.a.) alle 600 Sec. ob INN noch laeuft und schickt sonst eine Mail an den User news.
innxmit schickt bzw. bietet Artikel an zum Newsserver in Darmstadt
Prozesse mit (in.nnrpd) am Ende sind von Rechnern, die News per nntp lesen
Neustart von INN
INN wird beim booten des Rechners neugestartet (in rc.local).
Start per Hand (als ROOT): $ /usr/local/etc/rc.news
Danach INNWatch starten(als news) $ innwatch &
Zu beachten, die PID von INNWatch muss größer sein als die von innd, also ggf. INNWatch killen und neustarten.
Fehler, die bisher vorgekommen sind
- INN ist gethrottled bzw. ist abgestürzt und lässt sich nicht wieder starten: Fehler in den Files active oder history
Beim Hinzufügen oder Löschen von Gruppen wird manchmal die letzte Zeile in dem File active "zerstückelt". Sie ist meist die (kaputte) Kopie der vorhergehenden Zeile, kann also gelöscht werden. Nach Korrektur kann man INN wieder starten bzw. freigeben mit: ctlinnd go "".
Bei dem File history kann der Fehler in einer bel. Zeile vorkommen (z.Zt. 62 MByte bzw. 906916 Zeilen).
- Oft kommt die Nummerierung der Artikel durcheinander (history-, active-File, Artikel-Nummern im Spooldirectory). Dann muß neu durchgezählt werden mit:
ctlinnd renumber *
(* bedeutet alle Newsgruppen) Dies wird auch bei jedem nächtlichen News-Daily durchgeführt. - Das von News-Daily gestartete Expire bricht ab weil es Artikel nicht löschen bzw. unlinken konnte. Ursache (?) war:
- Ein Defekt auf einer Harddisk /dev/sd5a durch den Newsartikel zuerstört wurden. Dieser Defekt wurde als solcher vom Formatierungsprogramm (man format) eingetragen.
- Symbolische Links auf einen Artikel zeigten auf ein Directory, dieses konnte nicht (wie ein File) gelöscht werden.
- Zuwenig Platz in dem Homedir (/usr/local/news; siehe Plattenaufteilung). Das History-File (>60 MB) dient beim Expiren dazu, ein File mit einer Liste der abgelaufenen Artikel anzulegen. Weiterhin ein neues, dann aktuelles, History-File (auch ~60 MB) erzeugt. So viel Plattenplatzt muß noch vorhandem sein! Danach erfolgt das Löschen bzw. Unlinken der Artikel, anschliessend wird die Liste gelöscht und das alte History-File durch das neue ersetzt.
- INN ist gethrottled weil der Spoolbereich voll ist. Hier kann man statt des manuellen Startens von Expire (bei dem man die Parameter kennen muß) auch einfach news.daily aufrufen, ggf. die Expire-Zeit im File expire.ctl vorher verkleinern.
Fehlerbehebung
In der Mail von news.daily oder der INNWatch steht i.a. eine Fehlermeldung. Hiernach sucht man in der INN-FAQ geschrieben von Rich $altz und maintainiert von Tom Limoncelli. Die FAQ ändert sich oft, d.h. regelmässig updaten! Falls sich hier wirklich kein Hinweis ergibt, postet man eine Anfrage in die Newsgruppe news.software.nntp, die man sowieso lesen sollte. Das Thema dieser Gruppe ist INN. Man erhält i.d.R. spätestens nach einem Tag Antworten. Tom schreibt in 95 % der Anfragen zurück, wo die Antwort zu der Frage in der FAQ steht! In den anderen 5 % wird die Lösung direkt gepostet. Bei schwierigen Fällen antwortet Rich. Da alle Newsmaster die Gruppe lesen und auch Antworten ist das Problem schnell eingekreist. Wichtig beim Posten ist die Systemumgebung mit anzugeben. da es auf jedem Rechnertyp bzw. OS spezielle Macken gibt.
INN-Sourcen
Die neuesten Sources gibt es offiziell bei ftp.uu.net. Es wird aber auch überall gespiegelt, also einfach per (x)archie holen.Zum Übersetzen und während des Betriebs von INN werden die meisten GNU-Tools (siehe Installationsanleitung im Paket und Teil 2 der FAQ), Larry Walls Patch und Perl benötigt, z.B. verwenden die Scripts für beim Aufruf von (e)grep mehr Parameter,als das vorhandene grep verarbeiten kann.
aktuelle-Schreibmarke