Logrotate läuft zur falschen Stunde/Uhrzeit

Logrotate läuft zur falschen Stunde/Uhrzeit

Ich habe den folgenden Eintrag in meiner /etc/crontabDatei, um sicherzustellen, dass tägliche Cronjobs um 4:25 Uhr ausgeführt werden. Dies ist der einzige Eintrag dailyin dieser Datei:

25 4 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Der Inhalt meiner Datei /etc/cron.daily/umfasst logrotate:

 # ls -l /etc/cron.daily/
...
-rwxr-xr-x 1 root root  377 Jan 21  2019 logrotate

Hier ist die Logrotate-Konfiguration unter/etc/logrotate.d/

/var/log/remote/custom/*.log
{
        rotate 180
        daily
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
    # force rsyslog to refresh file descriptor
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

Warum /var/lib/logrotate/statussehe ich beim Überprüfen des Inhalts, dass die Protokolldatei um Mitternacht und nicht um 4:25 Uhr rotiert wird?

"/var/log/remote/custom/cust.log" 2020-11-4-0:0:39

Betriebssystem: Ubuntu 20.04 LTS Kernel:Linux 5.4.0-40-generic

Antwort1

Sie scheinen /etc/anacrontab übersehen zu haben, wo Anacron feststellt, wann /etc/cron.daily (und andere) ausgewertet werden müssen.

Dies ist auch einer der vielen Gründe, warum ich systemd meide. Überprüfen Sie die ersten Zeilen von /etc/cron.daily/logrotate:

# less -X  /etc/cron.daily/logrotate                        
#!/bin/sh

# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
    exit 0
fi

Antwort2

FürDebianBenutzer, Sie könnten denken, dass es unter 6.25 (/etc/crontab) läuft, aber seit den letzten Versionen läuft es unter 00.00 und ist konfiguriert aufsystemd!

Alte /etc/crontab:

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Wenn Sie die Ausführungszeit von systemd ändern möchten, müssen Sie diese Datei bearbeiten: /etc/systemd/system/timers.target.wants/logrotate.timer

standardmäßig ist es:

[Timer]
OnCalendar=daily

Wenn Sie es jeden Tag um 6.20 Uhr ausführen möchten:

[Timer]
OnCalendar=*-*-* 6:20

(dann habe ich das System neu gestartet, aber ich bin nicht sicher, ob das notwendig ist!)

Antwort3

Seien Sie beim Bearbeiten SEHR VORSICHTIG /etc/systemd/system/timers.target.wants/logrotate.timer– diese Datei ist ein symbolischer Link zu /lib/systemd/system/logrotate.timer.

Der Timer wird ignoriert, wenn die Datei versehentlich von einem symbolischen Link in eine normale Datei geändert wird. Dies ist der Fall, wenn Sie diese Datei beispielsweise mit sed als Teil eines Installationsskripts für ein eingebettetes System bearbeiten. Fragen Sie mich, woher ich das weiß!

verwandte Informationen