En algunos casos, tras la desinstalación de algunos paquetes en distribuciones RedHat / CentOS, es posible que desaparezca también algún paquete de la familia “cron” necesario para la normal ejecución de logrotate. Aclaremos un poco el funcionamiento de los paquetes necesarios para que logrotate pueda ejecutarse sin problemas.
Fichero /etc/cron.daily/logrotate (logrotate-3.7.8-15.el6.x86_64)
Directorio /etc/cron.daily/ (crontabs-1.10-33.el6.noarch)
Directorio /etc/cron.d (cronie-1.4.4-7.el6.x86_64)
NOTA: El directorio /etc/cron.daily/ debe ser creado por el paquete crontabs-1.10-33.el6.noarch, pero al estar previamente creado por el paquete logrotate, este no lo sobrescribe.
Paquetes que se deben instalar para que logrotate pueda funcionar con normalidad.
cronie-1.4.4-7.el6.x86_64 crontabs-1.10-33.el6.noarch
NOTA: Logrotate trae su configuración para ejecutarse diariamente con anacron. El programa anacron es ejecutado por cron y por lo tanto depende de el.
En la versiones de Redhat / Centos 6.x el fichero de configuración de cron, /etc/crontab, viene en blanco, pero no es el único lugar donde cron puede tener programadas tareas. En el directorio cron.hourly/ hay un script denominado “0anacron”, este es el encargado de ejecutar el contenido del directorio cron.daily/
contains 01 * * * * root run-parts /etc/cron.hourly
El mismo efecto tendría configurar en /etc/crontab la ejecución del contenido de /etc/cron.hourly. Como dijimos antes, la configuración de cron se realiza en /etc/crontab pero también en los directorios /etc/cron.d/ . Cada distro utiliza una forma diferente de configuración por defecto del programa cron (Leer).
Recordar también que logrotate mantiene un historial en /var/lib/logrotate.status, si realizamos configuraciones de logrotate solo basadas en tiempo y no en tamaño, al no ser que forcemos su ejecución con la opción “–force”, este no realizará ninguna tarea.
Anacron a diferencia de cron, ejecutará tareas programadas en el pasado que no se hayan podido realizar en su momento debido a errores, apagados, etc. Es el complemento de cron que asegura la ejecución de determinadas tareas importantes o para máquinas que no pueden estar el 100% del tiempo en linea.
El 90% de guías que indican el uso de logrotate configuran su funcionamiento directamente en /etc/crontab, lo cual no está mal, pero no se tiene en cuenta que también se ejecuta en anacron de forma automática, aunque eso puede depender de la distribución y versión de la misma.
Problema típico: Logrotate solo escribe en un único fichero quedando el resto vacíos.
Solución: Enviar la señal SIGHUP al demonio syslog / rsyslog para recargar su configuración.
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
Ahora el demonio que usa syslog para sus registros usará el fichero correcto, se debe adaptar también la configuración de logrotate para elservicio.
/var/log/maillog{ weekly rotate 12 create dateext sharedscripts ####### SOLUCIÓN PARA PROXIMAS ROTACIONES. ####### postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true # /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript ################################################### }
Debido a los cambios horarios producidos en verano e invierno, siempre entre las 2 y tres de la mañana, es posible que las tareas cron se realicen más veces de las deseadas. La importancia de esto esto dependerá de la tarea que se tenga automatizada. Para mitigar dicho problema, es suficiente con no incluir tareas programadas en ese espacio de tiempo.