it-swarm.com.de

Warum läuft Logrotate nicht automatisch?

Ich habe einen Syslog-ng-Server mit einigen Filtern eingerichtet, um bestimmten Datenverkehr in verschiedene Dateien aufzuteilen. Ich habe die Logrotate-Datei unter /etc/logrotate.d/syslog-ng geändert, um diese Dateien täglich zu drehen, aber Logrotate wird nicht wie erwartet ausgeführt. Ich muss die Protokolle manuell mit Sudo logrotate -f /etc/logrotate.d/syslog-ng drehen

Ich kann den Grund nicht finden, warum es nicht automatisch ausgeführt wird.

Inhalt der Datei /etc/logrotate.d/syslog-ng (der Abschnitt, den ich hinzugefügt habe, ist der oberste Block):

/var/log/wlc /var/log/userid /var/log/cltolt040 /var/log/ise /var/log/vg /var/log/firewall /var/log/steelhead /var/log/syslog /var/log/f5 /var/log/switch /var/log/router 
{
        su root root 
        rotate 14
        create 0755 ics ics 
        daily
        missingok
        notifempty

        compress
        postrotate
                invoke-rc.d syslog-ng reload > /dev/null
        endscript

}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
/var/log/error
{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                invoke-rc.d syslog-ng reload > /dev/null
        endscript
}

Inhalt von crontab:

# /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
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Inhalt von /etc/cron.daily/logrotate:

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

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

Ich dachte, es könnte eine Berechtigungsfrage sein, aber wenn das der Fall wäre, würde Logrotate -f nicht auch fehlschlagen?

2
John K.

Es sieht so aus, als hätte ich das behoben. Ich habe versucht, logrotate für die conf-Datei anstelle der syslog-ng-Datei logrotate -d /etc/logrotate.conf auszuführen, aber es hat diesen Fehler ausgelöst Ignoring /etc/logrotate.conf because of bad file mode. Es wurde eine schnelle Suche durchgeführt und festgestellt, dass dies an den Dateiberechtigungen liegen könnte. Ich habe die Berechtigungen für die Datei Sudo chmod 644 /etc/logrotate.conf geändert und einen Test durchgeführt, indem ich die tägliche Zeit in/etc/crontab geändert habe.

Die Dateien wurden dann automatisch gedreht. So sieht es aus, als wäre dies die Lösung. Danke für die Hilfe.

5
John K.