Dependiendo de su sistema operativo. Algunas (¿todas?) distribuciones de Linux tienen un directorio /etc/cron.hourly
donde puede poner trabajos cron para que se ejecuten cada hora.
Otros tienen un directorio /etc/cron.d/
. Allí puede poner trabajos cron que se ejecutarán como cualquier usuario especial con la configuración cron habitual de una entrada crontab (y debe especificar el nombre de usuario).
Si usa cualquiera de estos en lugar del script de rotación de registros estándar en /etc/cron.daily/
deberías copiar ese script allí y cp /dev/null
a la posición original. De lo contrario, se reactivará mediante una actualización de parche de logrotate.
Para una rotación horaria adecuada, también tenga cuidado de que el dateext
directiva es no establecer. Si es así, por defecto, el primer archivo rotado obtendrá la extensión de la fecha actual como AAAAMMDD. Luego, la segunda vez que logrotate se activaría en el mismo día, simplemente omitiría la rotación incluso si size
se ha excedido el umbral.
El motivo es que el nuevo nombre del archivo que se va a rotar ya existe y logrotate no agrega el contenido al archivo antiguo existente. Por ejemplo, en RHEL y CentOS, el dateext
la directiva se da por defecto en /etc/logrotate.conf
. Después de eliminar o comentar esa línea, los archivos rotados simplemente obtendrán un número continuo como extensión hasta llegar al rotate
valor. De esta forma, es posible realizar múltiples rotaciones al día.
Solo para agregar a la respuesta de Nils, si cambia la ubicación del logrotate
script en una caja de Debian o Ubuntu, probablemente sea más seguro usar dpkg-divert
en lugar de simplemente copiar el archivo y copiar /dev/null
a la posición original, por ejemplo:
dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
Otra opción sería agregar el comando logrotate en la lista crontab. Luego se ejecutará cada hora.
crontab -e
agregue la siguiente línea en la lista crontab
0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file