Lei­der er­wei­sen sich die 2.x-Ver­sio­nen des INN un­ter­halb von 2.4.x als deut­lich emp­find­li­cher ge­gen­über Ab­stür­zen, ja ge­ra­de­zu als Mi­mo­sen, die nach einer un­ge­plan­ten Be­en­di­gung oder einem Crash des Ser­vers nach um­fang­rei­che­ren Auf­räum­ar­bei­ten ver­lan­gen, na­ment­lich einer Neu­er­stel­lung der His­to­ry und einem ren­um­ber.

Ak­tu­el­le Ver­sio­nen hin­ge­gen - INN 2.4.0 wurde 2003 re­leased - sind von die­sem Pro­blem nicht mehr be­trof­fen. Den­noch: wenn ein INN mal cras­hed, ist es viel­leicht gut, pas­sen­de Scripts zur Hand zu haben.

Scripts

Mat­thi­as An­d­ree hat dafür eine fer­ti­ge Script­lö­sung, die als Be­nut­zer news aus­ge­führt wer­den soll­te:

#! /bin/sh

set -e
if test "x`id -un`" != xnews ; then
    echo >&2 "$0 must be executed as user news"
    exit 1
fi
eval `innconfval -s`
set -x
cd $PATHDB
ctlinnd throttle 'fixup' || :
ctlinnd reject 'fixup' || :
ctlinnd reload '' ''

if [ x"$OVMETHOD" = x"buffindexed" ] ; then
    awk -F: '
        /^[0-9]+:/ {
            printf "dd if=/dev/zero bs=1024 of=\"%s\" count=%d\n", $2, $3
        }' $PATHETC/buffindexed.conf \
    | sh -x
fi

makehistory -b -e -f history.n -O -l 30000
awk 'NF == 2 { print }' < history >> history.n
makedbz -s `wc -l < history` -f history.n
for i in history.n* ; do
    mv $i history${i##history.n}
done

ctlinnd reload all fixup
ctlinnd go fixup
ctlinnd renumber ''
echo "done."

Al­ter­na­tiv die Lö­sung von Se­bas­ti­an Bork, die das Vor­han­den­sein von sudo und eine ent­spre­chen­de Kon­fi­gu­ra­ti­on von /etc/sudoers vor­aus­setzt:

#!/bin/sh
/usr/local/news/bin/ctlinnd throttle Rebuilding databases.
sleep 5
rm -rf /var/spool/news/overview/*
rm -rf /var/spool/news/tradspool.map
/usr/local/news/bin/makehistory -b -f history.n -O -l 30000
cd /usr/local/news/db
awk 'NF == 2 { print }' < history >> history.n
/usr/local/news/bin/makedbz -s `wc -l < history` -f history.n
mv history.n history
mv history.n.dir history.dir
mv history.n.hash history.hash
mv history.n.index history.index
/usr/local/news/bin/ctlinnd reload all rebuild-newsspool
/usr/local/news/bin/ctlinnd go Rebuilding databases.
sleep 2
sudo /etc/init.d/inn2 restart
sleep 2
/usr/local/news/bin/ctlinnd renumber ''
mv /var/spool/news/incoming/bad/* /var/spool/news/incoming/
rm /var/spool/news/incoming/tmp/*

Bei die­ser Lö­sung müs­sen ggf. die Pfade an­ge­passt wer­den (bspw. /usr/lib/news/bin/ statt wie hier /usr/local/news/bin/).

Hin­wei­se

Es soll­te damit ge­rech­net wer­den, dass ein rich­ti­ger Ab­sturz, ggf. im Zu­sam­men­hang mit einem Hard­ware­scha­den, man­che Da­tei­en so in Mit­lei­den­schaft zie­hen kann, dass sie sich nicht mehr ein­le­sen las­sen, son­dern dann ggf. ge­löscht (oder zu­nächst ein­mal um­be­nannt) bzw. wie­der­her­ge­stellt wer­den müs­sen.

Daher ist es nicht ver­kehrt, am An­fang den Lauf bspw. von makehistory mit­tels strace oder einem ähn­li­chen Tool zu ver­fol­gen, um fest­zu­stel­len, ob es über­haupt ar­bei­tet oder be­reits beim Start hän­gen­bleibt. Das ver­hin­dert, dass man nach vie­len Stun­den makehistory immer noch nicht wei­ter ist als zu An­fang …

Li­zenz

Creative Commons-Lizenzvertrag Die­ser In­halt ist unter der Crea­ti­ve Com­mons-Li­zenz BY-NC-SA 4.0 DE li­zen­ziert; er darf unter Na­mens­nen­nung des Au­tors nicht-kom­mer­zi­ell wei­ter­ge­ge­ben und auch be­ar­bei­tet wer­den, so­weit das neue Werk gleich­falls wie­der die­ser Crea­ti­ve-Com­mons-Li­zenz un­ter­liegt. Die Ein­zel­hei­ten er­ge­ben sich aus dem Li­zenz­ver­trag.