
Ich habe den folgenden Eintrag in meiner /etc/crontab
Datei, um sicherzustellen, dass tägliche Cronjobs um 4:25 Uhr ausgeführt werden. Dies ist der einzige Eintrag daily
in 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/status
sehe 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ß!