Logrotate запущен в неправильное время/час

Logrotate запущен в неправильное время/час

У меня есть следующая запись в моем /etc/crontabфайле, чтобы гарантировать, что ежедневные cronjobs запускаются в 4:25 утра. Это единственная запись для dailyвнутри этого файла:

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

Содержимое моего /etc/cron.daily/включает в себя logrotate:

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

Вот конфигурация logrotate/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
}

Почему при проверке содержимого /var/lib/logrotate/statusя вижу, что ротация лог-файла происходит в полночь, а не в 4:25 утра?

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

Операционная система: Ubuntu 20.04 LTS Ядро:Linux 5.4.0-40-generic

решение1

Похоже, вы пропустили /etc/anacrontab, где anacron определяет, когда следует оценивать /etc/cron.daily (и другие).

Также, это одна из многих причин, по которым я избегаю systemd. Проверьте первые строки /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

решение2

ДляДебианпользователи, вы можете подумать, что он работает на 6.25 (/etc/crontab), но с последних нескольких версий он работает на 00.00 и настроен насистемд!

Старый /etc/crontab:

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

Если вы хотите изменить время выполнения systemd, вам необходимо отредактировать этот файл: /etc/systemd/system/timers.target.wants/logrotate.timer

по умолчанию это:

[Timer]
OnCalendar=daily

Если вы хотите запускать его в 6.20 каждый день:

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

(затем я перезагрузил систему, но не уверен, что это необходимо!)

решение3

Будьте ОЧЕНЬ ОСТОРОЖНЫ при редактировании /etc/systemd/system/timers.target.wants/logrotate.timer— этот файл является символической ссылкой на /lib/systemd/system/logrotate.timer.

Таймер будет проигнорирован, если файл случайно изменен с символической ссылки на обычный файл, что и произойдет, если вы отредактируете этот файл, используя (например) sed как часть установочного скрипта для встроенной системы. Спросите меня, откуда я знаю!

Связанный контент