logrotate

Pmeger

New Member
Hallo an alle!

Irgendwie wird mein logrotate nicht über cron ausgeführt.
Es handelt sich um einen Ubuntu 8.04 vServer mit Plesk 9.

Unter /etc/cron.daily/ habe ich eine Datei logrotate. In dieser steht:
Code:
#!/bin/sh

##test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
Rechte sind auf 755.
Trotzdem wird logrotate nicht ausgeführt.

Starte ich die Datei händisch, läuft logrotate ohne Probleme einmal durch.
Über den Crontab Aufgaben Manager in Plesk habe ich auch schon versucht die Datei durch root ausführen zu lassen. Ohne Erfolg.

Was mache ich falsch?
Danke!
 
Falls es hilft, in der /etc/logrotate.conf steht folgendes:

Code:
# see "man logrotate" for details
# rotate log files daily
daily

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

# system-specific logs may be configured here

Im Ordner /etc/logrotate.d/ sind folgende Dateien:

apache2
Code:
/var/log/apache2/*.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 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
}

apt
Code:
/var/log/apt/term.log {
  rotate 6
  monthly
  compress
  missingok
  notifempty
}

dpkg
Code:
/var/log/dpkg.log {
	monthly
	rotate 12
	compress
	delaycompress
	missingok
	notifempty
	create 640 root adm
}

exim4-base
Code:
/var/log/exim4/mainlog /var/log/exim4/rejectlog {
	daily
	missingok
	rotate 10
	compress
	delaycompress
	notifempty
	create 640 Debian-exim adm
}

/var/log/exim4/paniclog {
	size 10M
	missingok
	rotate 10
	compress
	delaycompress
	notifempty
	create 640 Debian-exim adm
}

fail2ban
Code:
/var/log/fail2ban.log {
   
    weekly
    rotate 4
    compress

    delaycompress
    missingok
    postrotate
	invoke-rc.d --quiet fail2ban reload >/dev/null
    endscript
    create 640 root adm
}

mysql-server
Code:
# - I put everything in one block and added sharedscripts, so that mysql gets 
#   flush-logs'd only once.
#   Else the binary logs would automatically increase by n times every day.
# - The error log is obsolete, messages go to syslog now.
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
	daily
	rotate 7
	missingok
	create 640 mysql adm
	compress
	sharedscripts
	postrotate
		test -x /usr/bin/mysqladmin || exit 0

		# If this fails, check debian.conf! 
		export HOME=/etc/mysql/my.cnf
		MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
		if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
		  # Really no mysqld or rather a missing debian-sys-maint user?
		  # If this occurs and is not a error please report a bug.
		  if ps cax | grep -q mysqld; then
 		    exit 1
		  fi 
		else
		  $MYADMIN flush-logs
		fi
	endscript
}

qmail
Code:
/var/log/mail.log /var/log/mail.info /var/log/mail.warn /var/log/mail.err {
    compress
    dateext
    maxage 365
    rotate 99
    missingok
    notifempty
    size +4096k
    create 640 root root
    sharedscripts
    postrotate
        /etc/init.d/sysklogd reload-or-restart > /dev/null
    endscript
}

syslog
Code:
/var/log/syslog /var/log/lastlog {
    compress
    dateext
    maxage 365
    rotate 99
    missingok
    notifempty
    size +4096k
    create 640 root root
    sharedscripts
    postrotate
        /etc/init.d/sysklogd reload-or-restart > /dev/null
    endscript
}

Es wäre schon super, wenn wenigstens die logs vom qmail rotiert werden.
 
Zur Klärung:
Werden alle Logfiles nicht rotiert, oder nur einige und andere doch?
Läuft Cron überhaupt?

huschi.
 
Oh sorry :)
Also in /var/log ist bisher noch kein log rotiert wurden.
Allerdings werden die Plesk Logs rotiert: /opt/psa/var/log

Und ein ps -A gibt mir aus, dass Cron aktiv ist.
 
Dann denke ich, dass wahrscheinlich cron.daily nicht korrekt abgearbeitet wird. Schau mal in /etc/crontab nach. Oder wird bei Ubuntu nicht der at-daemon genutzt?

huschi.
 
also in /etc/crontab steht folgendes:
Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
48 * * * * root cd / && run-parts --report /etc/cron.hourly
52 3 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
37 3 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
51 0 2 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Sieht doch so aus, als wäre alles richtig?

Sorry habe keine Ahnung was der at-daemon ist.
 
Ich habe jetzt im Plesk eine neue "Geplante Aufgabe" für root erstellt.

Code:
/etc/cron.daily/logrotate

Jetzt rotiert er wenigstens die mysql log Datei. (/etc/logrotate.d/mysql-server)
Aber die anderen trotzdem nicht :(

im syslog habe ich folgendes gefunden:
Code:
Jun  8 01:01:01 h1458687 /USR/SBIN/CRON[13789]: (root) CMD (/etc/cron.daily/logrotate)
Jun  8 01:09:01 h1458687 /USR/SBIN/CRON[21940]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun  8 01:10:01 h1458687 /USR/SBIN/CRON[24201]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  8 01:20:01 h1458687 /USR/SBIN/CRON[4089]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  8 01:30:01 h1458687 /USR/SBIN/CRON[17721]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  8 01:39:01 h1458687 /USR/SBIN/CRON[27973]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun  8 01:40:01 h1458687 /USR/SBIN/CRON[30149]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  8 01:48:01 h1458687 /USR/SBIN/CRON[9279]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)

01:01 Uhr ist der cron, den ich via Plesk angelegt habe.
 
Last edited by a moderator:
Nur so aus Interesse:
Finden sich solche einträge auch für .daily, .weekly und .monthly?
Jun 8 01:48:01 h1458687 /USR/SBIN/CRON[9279]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
Wenn nicht, dann schau mal nach ob /usr/sbin/anacron existiert.

huschi.
 
Ja, sind vorhanden:
Code:
Jun  8 03:52:01 h1458687 /USR/SBIN/CRON[15470]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Jun  7 03:37:01 h1458687 /USR/SBIN/CRON[18142]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

/usr/sbin/anacron ist auch vorhanden.
 
Aha! Dann tippe ich darauf, dass anacron nicht läuft.
Entweder anacron (re-)starten oder (meiner Meinung nach besser) deinstallieren.

huschi.
 
OK, danke Dir!
Habe anacron jetzt deinstalliert.

Welche Funktion übernimmt anacron denn überhaupt? Benötige ich jetzt nicht eine Alternative für anacron?
 
Du führst Vorschläge also erstmal blind aus und fragst dann erst nach der Erklärung?
(Interessante Methode einen Server zu administrieren...)

Die "Alternative" hast Du bereits: cron.

huschi.
 
Ist doch kein Problem :)
Logrotate tuts doch bis jetzt sowieso nicht.

Und installieren oder gar nen Backup zurück spielen, kann ich immer noch ^^.

Aber Du wirst ja wissen wovon Du redest, also hab ich es einfach runtergehauen.

Zurück zum Thema:
Ich kann also jetzt die "Geplante Aufgabe" aus Plesk rauswerfen und er sollte heute nacht automatisch rotieren?

Denn wenn ich
/etc/cron.daily/logrotate
manuell ausführe, rotiert er trotzdem nicht?
 
Logrotate tuts doch bis jetzt sowieso nicht.
Aber Logrotate ist nur ein Symptom. Alle regelmäßigen Cronjobs hängen da dran.
(Ist wohl nicht wirklich klar geworden, oder?)

er sollte heute nacht automatisch rotieren?
Er sollte es zumindest starten.

manuell ausführe, rotiert er trotzdem nicht?
Oben hast Du was anderes behauptet:
Starte ich die Datei händisch, läuft logrotate ohne Probleme einmal durch.

huschi.
 
Hmmh, da hab ich wohl ein bisschen was falsch verstanden.
Also das mit dem logrotate ist mir soweit klar. Cron eigentlich auch, aber anacron sagt mir halt nichts. Wenn Du sagst, es ist eine Alternative zu cron, dann kann ich es doch "einfach" rauswerfen ohne das passiert, da cron ja noch läuft.

Als anacron noch installiert war, konnte ich es manuell starten. Nun geht es nicht mehr :(
 
da hab ich wohl ein bisschen was falsch verstanden.
Ja, immer noch:
Es war nur ein Anzeichen dafür, dass weder cron.daily, cron.weekly oder cron.monthly abgearbeitet worden sind.

anacron sagt mir halt nichts.
Dann fragt man mal freundlich bei Tante Google nach.

Als anacron noch installiert war, konnte ich es manuell starten. Nun geht es nicht mehr :(
FEHLERMELDUNG!!!

Wurde mit anacron evtl. noch mehr deinstalliert?

huschi.
 
Ne, sonst wurde nichts deinstalliert.

Also abwarten und schauen welche Meldungen im syslog rauskommen?
Danke!
 
Also diese Nacht um 03:48 Uhr hat logrotate eine Datei rotiert :)
Na, immerhin ^^
Er hat die syslog in syslog.0 umbenannt,.. Nicht wirklich das, was ich gerne hätte :(
Die anderen Dateien wurden jedoch nicht angefasst?
Obwohl sich in cron.daily/ die Datei logrotate mit folgendem Inhalt befindet:
Code:
#!/bin/sh

##test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

Oder wie muss ich logrotate ausführen?

Was mich ein bisschen wundert:
Code:
Jun  9 03:52:01 h1458687 /USR/SBIN/CRON[17662]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Obwohl anacron deinstalliert wurde.

Im syslog sind sonst noch folgende Einträge zu finden:
Code:
Jun  9 03:48:01 h1458687 /USR/SBIN/CRON[11917]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)
Jun  9 04:00:01 h1458687 /USR/SBIN/CRON[30407]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  9 04:09:01 h1458687 /USR/SBIN/CRON[11399]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jun  9 04:10:01 h1458687 /USR/SBIN/CRON[13541]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  9 04:14:01 h1458687 /USR/SBIN/CRON[17708]: (root) CMD (/opt/psa/admin/sbin/backupmng >/dev/null 2>&1)
Jun  9 04:20:01 h1458687 /USR/SBIN/CRON[26073]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
Jun  9 04:20:01 h1458687 /USR/SBIN/CRON[26077]: (root) CMD (/usr/local/psa/admin/sbin/statistics)
Jun  9 04:29:01 h1458687 /USR/SBIN/CRON[5430]: (root) CMD (/opt/psa/admin/sbin/backupmng >/dev/null 2>&1)
Jun  9 04:30:01 h1458687 /USR/SBIN/CRON[7499]: (www-data) CMD ([ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null)
 
Also diese Nacht um 03:48 Uhr hat logrotate eine Datei rotiert :)
Mmmmh! Die Uhrzeit passt nicht zum Logeintrag von Cron.daily
Aber es ist ein gute Zeichen. Denn jetzt wird cron.daily wirklich ausgeführt.
Allerdings sind für die Syslog-Dateien nicht logrotate zuständig, sondern /etc/cron.daily/sysklogd.

Er hat die syslog in syslog.0 umbenannt
Richtig. Beim nächsten Durchlauf wird die erst komprimiert.

Die anderen Dateien wurden jedoch nicht angefasst?
Womit wir wieder mal bei meine Aufschrei sind:
FEHLERMELDUNG!!!
Das soll nichts anderes heißen, als wenn Du - wie oben - behauptest ein Programm kann nicht mehr gestartet werden, dann gefälligst mehr Informationen liefern sollst.

Obwohl anacron deinstalliert wurde.
Ja, ist korrekt so.

huschi.
 
Ok! Danke Dir!
Es lief schon seitdem anacron deinstalliert war. Ist mir nur nicht aufgefallen, da die logfiles noch zu klein zum rotieren waren.
Heute morgen wurden alle Files rotiert.

Also vielen DANK für die Hilfe!

Aber noch was anderes, passt hier vll. nicht so ganz rein, aber evtl. weiß jmd. die Antwort mal eben :)

Sonst gab es immer eine /var/log/mail.err
Diese Datei existiert jetzt nicht mehr, dafür habe ich eine /var/logmail.err

Fehlt da in irgendeiner Pfadangabe jetzt nur ein "/"? - oder ist das jetzt so?
Das gleiche gilt für auth.log.

Danke!
 
Back
Top