Logrotate se ejecuta a una hora incorrecta

Logrotate se ejecuta a una hora incorrecta

Tengo la siguiente entrada en mi /etc/crontabarchivo para garantizar que los cronjobs diarios se ejecuten a las 4:25 a. m. Esta es la única entrada dailydentro de este archivo:

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

El contenido de mi /etc/cron.daily/incluye logrotate:

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

Aquí está la configuración de logrotate en/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
}

¿Por qué cuando inspecciono el contenido de /var/lib/logrotate/status, veo que el archivo de registro se rota a medianoche y no a las 4:25 a. m.?

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

Sistema operativo: Ubuntu 20.04 LTS Núcleo:Linux 5.4.0-40-generic

Respuesta1

Parece que has pasado por alto /etc/anacrontab, donde anacron encuentra cuándo evaluar /etc/cron.daily (y otros).

Además, una de las muchas razones por las que me mantengo alejado de systemd. Compruebe las primeras líneas de /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

Respuesta2

ParaDebianusuarios, se podría pensar que se está ejecutando en 6.25 (/etc/crontab) pero desde la última versión, se ejecuta en 00.00 y está configurado ensistemad!

Antiguo /etc/crontab :

25 6 * * * prueba raíz -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Si desea cambiar el tiempo de ejecución de systemd, debe editar este archivo: /etc/systemd/system/timers.target.wants/logrotate.timer

por defecto es:

[Timer]
OnCalendar=daily

Si quieres ejecutarlo a las 6:20 todos los días:

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

(luego reinicié el sistema, ¡pero no estoy seguro de que sea necesario!)

Respuesta3

Tenga MUCHO CUIDADO al editar /etc/systemd/system/timers.target.wants/logrotate.timer: ese archivo es un enlace simbólico a /lib/systemd/system/logrotate.timer.

El temporizador se ignorará si el archivo se cambia accidentalmente de un enlace simbólico a un archivo normal, lo que ocurrirá si edita este archivo usando (por ejemplo) sed como parte de un script de instalación para un sistema integrado. ¡Pregúntame cómo lo sé!

información relacionada