
Tengo la siguiente entrada en mi /etc/crontab
archivo para garantizar que los cronjobs diarios se ejecuten a las 4:25 a. m. Esta es la única entrada daily
dentro 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é!