Logrotate: cómo acceder al archivo de salida en postrotate


15

Roto los Nginxregistros diariamente (con dateext). Después de la rotación, quiero analizar el archivo del día que acaba de pasar y compilar un correo electrónico con la cantidad de errores devueltos por el servidor Nginx.

¿Cómo puedo acceder al archivo de salida en la sección postrotate / endscript de logrotate?


¿Puedes elaborar más?
Khaled

Hecho. Lo siento, pensé que es lo suficientemente claro. :)
ibz

Respuestas:


4

No conozco ninguna variable que pueda usar si eso es lo que está buscando. Sin embargo, inmediatamente después de rotar el registro, debe saber con precisión el nombre al que se ha rotado el archivo en función de la configuración que haya establecido para la rotación ( /var/log/somefile.1o similar).

¿Quizás sería más fácil responder si describiera el problema real que está tratando de resolver?


Pensé que el problema es irrelevante. Lo explicó con más detalle ahora. Sí, puedo usar la fecha para obtener el nombre del archivo, pero esperaba poder hacerlo a través de alguna variable o algo, lo que tendría más sentido.
ibz

3
Parece que larsks ha encontrado exactamente lo que quieres. $ 1 es la variable que estás buscando.
Marque el

17

Si no está utilizando la directiva "sharedscripts", su script postrotate recibe, como $ 1, el archivo que activó la rotación del registro. Esto podría ayudar si está tratando de usar un script genérico con múltiples estrofas de rotación. Es decir, dado algo como esto:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Si necesita rotar algún archivo coincidente, se llamará a su secuencia de comandos con $ 1 establecido en "/var/log/sample1.log", "/var/log/sample2.log" o "/var/log/sample3.log " según sea apropiado. Luego puede agregar ".1" para encontrar el archivo que acaba de girar.

Si usa la opción "sharedscripts", entonces su script se llamaría con $ 1 establecido en "/var/log/sample1.log /var/log/sample[23font>.log" (que lo ayudará a identificar una estrofa particular pero no el archivo exacto).

Esperemos que esto te dé un lugar para comenzar. Tenga en cuenta que esto solo funcionará para logrotate> v3.7.5.


1
Práctico. En realidad, tanto el script anterior como el posterior a la rotación parecen recibir el nombre del archivo rotado como $ 1, que es exactamente lo que pide la pregunta.
Marque el

1
@mark el script recibe el nombre del archivo de entrada , no el archivo de salida
kbolino
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.