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'.
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.
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.
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.
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 ...
Respuestas:
Si:
logrotate --force $CONFIG_FILE
fuente
--force
rotará el archivo (s) incluso si no cumplen con los criterios especificados, como tamaño, edad, etc.logrotate --force /etc/logrotate.d/
(solo el nombre del directorio)--force
forzará 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 quelogrotate -d
no surgirían (por ejemplo, un servidor se estaba quedando sin espacio debido a que logrotate no se ejecutó durante meses ... y gracias a--force
que descubrí que habíaFile exists
errores. ¡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.fuente
logrotate --force
y funciona bien.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.d
y funcionarán de manera independiente.Tenga en cuenta que la configuración global especificada en
/etc/logrotate.conf
no 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
-d
para ver qué pasaría:Luego puede ejecutar (usando nginx como ejemplo):
Y los registros nginx solo se rotarán.
fuente
logrotate -d /etc/logrotate.conf
se ejecutará a través de cualquier otro archivo conf incluido.Es posible que desee ejecutarlo en modo detallado + fuerza.
logrotate -vf /etc/logrotate.conf
fuente
La forma de ejecutar todo logrotate es:
eso ejecutará el archivo logrotate primario, que también incluye las otras configuraciones de logrotate
fuente
Emita el siguiente comando, la forma de ejecutar logrotate especificado:
Opciones:
-v: muestra el proceso
-f: ejecución forzada
personalizado: configuración de registro definida por el usuario
por ejemplo: mongodb-log
fuente
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.
fuente
/var/lib/logrotate.status
archivo no existe en Debian Squeeze.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...
fuente