Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
mopsy
- Beiträge: 39
- Registriert: 21.03.2009 12:26:23
Beitrag
von mopsy » 27.08.2009 01:14:46
Hi,
ich möchte die Statistiken von AWStats täglich erstellen lassen und hab mir dafür ein Script gebastelt und in /etc/logrotate.d/apache2 eingefügt. Manuell auf der Konsole gestartet läuft das Script fehlerfrei durch, aber per Cron passiert nichts, auch keine Fehler in den Logs.
Hier mal das Script:
Code: Alles auswählen
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
/var/www/web*/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
query='SELECT web FROM domains WHERE awstats = "1";'
TIMESTAMP=$(date "+%Y/%m")
tmpfile=$(tempfile)
echo "use DBNAME; " | mysql -s -u USER -pPASS -h HOSTNAME >>$tmpfile
for i in `cat "${tmpfile}"`
do
if [ ! -d /var/www/web${i}/awstats/${TIMESTAMP} ]
then
mkdir -p /var/www/web${i}/awstats/${TIMESTAMP}
echo "<a href="${TIMESTAMP}/awstats.web${i}.html">AWstats-Statistik für $(date "+%B %Y")</a></br></br>" >> /var/www/web${i}/awstats/index.htm
fi
perl /usr/lib/cgi-bin/awstats_buildstaticpages.pl -update -config=web${i} -lang=de -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/web${i}/awstats/${TIMESTAMP}
chown -R web${i}:web${i} /var/www/web${i}/awstats
find /var/www/web${i}/awstats -type f -exec chmod 640 "{}" \;
find /var/www/web${i}/awstats -type d -exec chmod 750 "{}" \;
done
rm ${tmpfile}
endscript
}
Gruß Stephan
-
dirkolus
- Beiträge: 8
- Registriert: 21.12.2007 10:15:36
- Wohnort: Würmtal
Beitrag
von dirkolus » 28.08.2009 11:09:21
Ohne jetzt irgendwas genauer untersucht zu haben: Vielleicht ist es kein Problem vom Script, sondern von cron? Brauchst Du irgendwo irgendwelche Umgebungsvariablen oder so? $PATH ...?
Dk
-
mopsy
- Beiträge: 39
- Registriert: 21.03.2009 12:26:23
Beitrag
von mopsy » 28.08.2009 11:26:49
Moin,
Brauchst Du irgendwo irgendwelche Umgebungsvariablen oder so? $PATH ...?
Nicht das ich wüsste, das Script habe ich komplett eingefügt, ist aber eigentlich nicht weiter aufregend. Ich mache nur einen MySQL Select und schreibe das Ergebnis in eine Tempdatei die dann weiterverarbeitet wird.
Hat man - wenn per Cron gestartet - irgendwelche Einschränkungen zu beachten?
Gruß Stephan
-
dirkolus
- Beiträge: 8
- Registriert: 21.12.2007 10:15:36
- Wohnort: Würmtal
Beitrag
von dirkolus » 28.08.2009 11:36:09
Naja, es werden halt keine oder nur sehr wenige Umgebungsvariablen eingelesen. Deswegen sollte der cron-Eintrag immer absolute Aufruf-Pfade enthalten oder Du probierst mal einen Aufruf mit
oder so. Schau einfach mal, ob cron überhaupt funktioniert
-
mopsy
- Beiträge: 39
- Registriert: 21.03.2009 12:26:23
Beitrag
von mopsy » 28.08.2009 11:47:10
Grundsätzlich laufen Cron Scripte problemlos wenn Du das meinst.
root@test:/# source /root/.bashrc; /etc/logrotate.d/apache2
-bash: /etc/logrotate.d/apache2: Permission denied
-
dirkolus
- Beiträge: 8
- Registriert: 21.12.2007 10:15:36
- Wohnort: Würmtal
Beitrag
von dirkolus » 28.08.2009 11:52:10
Sorry, ich meinte: der Eintrag in die Crontab sollte lauten
Und nein, ein permission denied sollte auch nicht auftreten.
Wenn's das dann nicht ist, ist schonmal eine Fehlerquelle ausgeschaltet.
Dirk