Logrotate e Apri file


21

In che modo logrotate gestisce i file aperti? Logrotate può ruotare i file aperti da un processo?

Risposte:


7

Per quelle applicazioni che non accettano i segnali da logrotate come descritto da Rory, uso un paio di metodi.

  1. Utilizzare l'opzione copytruncate
  2. Aggiungi un'istruzione post-rotazione per riavviare il servizio

La decisione su quale utilizzare dipende dalla dimensione dei file di registro e dalla necessità di registri continui. Sarà un'analisi del rischio da parte tua. Tuttavia, per fare un esempio, utilizzo un riavvio post-rotazione su alcuni registri in cui dovrei effettivamente utilizzare un copia-tronchi. Tuttavia, i file sono spesso diversi concerti e la copia potrebbe richiedere un tempo abbastanza lungo che è preferibile perdere un secondo o due ogni notte.


Ci scusiamo per essere troppo tardi, ma immagino di poter risparmiare un po 'di tempo per gli altri che cercano questo problema. Dai un'occhiata a un altro approccio per risolvere questo problema. unix.stackexchange.com/a/122942/189725
Victor,

17

Sembra che potrei desiderare quanto segue, ma ancora interessato all'esperienza di chiunque sull'argomento:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
È come fare "cp qualcosa.log qualcosa.log.1;:> qualcosa.log" quindi il file si svuota ma il filehandle su di esso non si rompe. Il problema è il tempo tra i 2 comandi, potresti perdere qualche riga di log
raggio

5

logrotate invierà il processo corretto al processo per comunicargli di riaprire i file di registro. Funziona fuori dalla scatola per cose come apache o mysql.

Puoi vederlo nello script postrotate per apache. Se hai il tuo demone e vuoi che logrotate funzioni con esso, assicurati che ascolti un certo segnale e riapri i file di registro.

Se non è possibile modificare il programma, è possibile vedere se il daemon ha un modo per scaricare automaticamente i registri. Oppure aggiungi un prerotato che arresta il server e un postrotate che lo riavvia.


Okay, non pensare che riuscirò a convincere gli sviluppatori a farlo, ma è bello sapere qual è lo standard :-)
Kyle Brandt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.