¿Es posible ejecutar una verificación de logrotate manualmente?

541

¿Es posible ejecutar una iteración de logrotate manualmente sin programarlo en algún intervalo?

Vladimir
fuente
3
El problema con logrotate es que tiene un archivo de configuración global y NO le permite ejecutar un solo archivo de subconfiguración de rotación de registro mientras sigue aplicando las opciones establecidas en el archivo de configuración global. Es decir, no tiene una buena manera de ejecutar UNA sola comprobación de archivo de rotación de registro, exactamente como lo haría cuando se ejecuta cada noche desde cron. Podría hacer con una opción de 'límite a estos archivos de registro', o mejor aún, 'ejecutar la configuración global, pero solo incluir este archivo de subconfiguración'.
anthony

Respuestas:

717

Si: logrotate --force $CONFIG_FILE

pilcrow
fuente
115
tenga en cuenta que --forcerotará el archivo (s) incluso si no cumplen con los criterios especificados, como tamaño, edad, etc.
xofer
44
Si coloca el archivo de configuración logrotate en /etc/logrotate.d/custom.conf, ¿significa esto que no necesita especificar un tamaño / hora cuando el registro debería rotar automáticamente? ¿O debería colocar la configuración en una carpeta diferente si no tiene la intención de hacer que gire automáticamente?
Damainman
18
El criterio "notifempty" no es ignorado por "--force". Esto me dejó perplejo por un tiempo, así que menciono esto como una excepción a la declaración @xofer.
thelogix
16
Puede rotar todo con logrotate --force /etc/logrotate.d/(solo el nombre del directorio)
fcm
1
Es cierto que --forceforzará la rotación incluso si los archivos no cumplen con los criterios (edad, tamaño, etc.), pero tenga en cuenta que esta es la única forma de detectar problemas reales que logrotate -dno surgirían (por ejemplo, un servidor se estaba quedando sin espacio debido a que logrotate no se ejecutó durante meses ... y gracias a --forceque descubrí que había File existserrores. ¡
Eliminé
559

logrotate -d [your_config_file] invoca el modo de depuración, ofreciéndole una descripción detallada de lo que sucedería, pero sin modificar los archivos de registro.

entrega
fuente
81
aquellos que vinieron aquí buscando la respuesta de una pregunta como "¿cómo puedo probar mi logrotate conf?" puede tomar esta como respuesta, ya que solo
PRUEBA
No funcionó con su enfoque, lo intenté logrotate --forcey funciona bien.
Benyamin Jafari
122

Si desea forzar la ejecución de un único directorio específico o archivos de registro de daemon, generalmente puede encontrar la configuración /etc/logrotate.dy funcionarán de manera independiente.

Tenga en cuenta que la configuración global especificada en /etc/logrotate.confno se aplicará, por lo que si hace esto, debe asegurarse de especificar todas las opciones que desee /etc/logrotate.d/[servicename]específicamente en el archivo de configuración.

Puedes probarlo -dpara ver qué pasaría:

logrotate -df /etc/logrotate.d/nginx

Luego puede ejecutar (usando nginx como ejemplo):

logrotate -f /etc/logrotate.d/nginx

Y los registros nginx solo se rotarán.

trisweb
fuente
1
Esto está muy bien, pero pierde cualquier configuración global que tenga en "/etc/logrotate.conf". Escribí una secuencia de comandos para fusionar los archivos logrotate globales y específicos y luego los utilicé para resolver este problema. (ver mi respuesta)
anthony
El uso también logrotate -d /etc/logrotate.confse ejecutará a través de cualquier otro archivo conf incluido.
wmassingham
61

Es posible que desee ejecutarlo en modo detallado + fuerza.

logrotate -vf /etc/logrotate.conf

vivekv
fuente
36

La forma de ejecutar todo logrotate es:

logrotate -f /etc/logrotate.conf

eso ejecutará el archivo logrotate primario, que también incluye las otras configuraciones de logrotate

Allen Hancock
fuente
21

Emita el siguiente comando, la forma de ejecutar logrotate especificado:

logrotate -vf /etc/logrotate.d/custom

Opciones:

-v: muestra el proceso

-f: ejecución forzada

personalizado: configuración de registro definida por el usuario

por ejemplo: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
wangc
fuente
plus1 para proporcionar realmente un ejemplo completo. PD: ¿Cómo podemos determinar qué hace realmente logrotate a los archivos ?
personal_cloud
7

edite /var/lib/logrotate.status para restablecer la fecha de 'última rotación' en el archivo de registro que desea probar.

Entonces corre logrotate YOUR_CONFIG_FILE.

O puede usar la bandera --force, pero editar logrotate.status le brinda más precisión sobre lo que se rota y lo que no.

Ben Aveling
fuente
Este /var/lib/logrotate.statusarchivo no existe en Debian Squeeze.
Lashae
Pruebe / var / lib / logrotate / status. No estoy seguro de si esto es una cosa debian / redhat, o si pongo "." donde debería haber puesto "/".
Ben Aveling
2

Creó un script de shell para resolver el problema.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Este script ejecutará solo el archivo de subconfiguración de logrotate único que se encuentra en "/etc/logrotate.d", pero incluye la configuración global del archivo de configuración global "/etc/logrotate.conf". También puede usar otras opciones para probarlo ...

Por ejemplo...

  logrotate_one -d syslog
Antonio
fuente