Forumlogfiles rollen
Roger Rehnelt – Freitag, 28. Oktober 2005 18:48 Uhr

hallo leute!

ich ich habe ein paar webseiten auf meinem server, bei denen ich gern die logfiles rollen und packen möchte. bisher mache ich das mt folgendem script:

#!/bin/bash

#Dateien, die es zu sichern gilt

LogDatei=(“error.log” “httpd.log”)

#unterhalb dieses Pfades werden die logs gesichert

Pfad=”/var/home/htdocs/”

#Unterverzeichnis (hier mit datum)

UV=`date -d now +%m%Y`

#Apache stoppen:

killall httpd

killall httpd

echo Apache stop

#Dateien sichern:

r=0

while [ -n “${LogDatei[$r]}” ]; do

for i in `find $Pfad -name ${LogDatei[$r]}`; do

test -e `dirname $i`/$UV || mkdir `dirname $i`/$UV

mv $i `dirname $i`/$UV/`basename $i`

done

let r++

done

#Apache starten:

/usr/httpd/bin/apachectl start

#Dateien packen:

r=0

while [ -n “${LogDatei[$r]}” ]; do

for i in `find $Pfad -path *$UV/${LogDatei[$r]}`; do

echo $i

bzip2 $i

done

let r++

done

1. das script stoppt den webserver und benennt die logdateien um.
2. startet den webserver und
3. packt dann die umbenannten dateien
die neuen logfiles werden dann beim start des apachen neu angelegt.

leider gibt’s ein problem: schritt 2 fällt aus. die dateien werden also prima umbenannt und gepackt, aber der webserver startet nicht. ich kann mir vorstellen, dass sich das script evtl. verschluckt, weil der webserver wieder gestartet wird, während es evtl. noch am umbenennen ist. oder?
woran könnte es liegen und wie kann ich den fehler beseitigen?

wäre für eure hilfe dankbar.
gruß, roger.

1 Antwort
Florian E.J. Fruth – Samstag, 29. Oktober 2005 01:11 Uhr

hi,
erstens:

killall httpd
killall httpd

wieso gibt es wohl start und STOP scripten? das würde ich mal durch ein /etc/init.d/apache stop ersetzen – den u.a. können ports noch blockiert werden und der apache so nicht mehr starten wenn du ihn einfach killst.
dies könnte u.a. dein problem lösen ;) desweiteren evtl. einfach einmal ein “sleep 5” einfügen vor dem erneutem starten.

zweitens (“wiso einfach wenn es auch umständlich geht” ;):
schau dir mal logrotate[1] an – das sollte genau das tun was du willst und ist eigentlich bei jeder guten distro mit dabei

fejf

[1] http://iain.cx/src/logrotate/