Logrotate: come accedere al file di output in postrotate


15

Ruoto i Nginxregistri ogni giorno (con dateext). Dopo la rotazione, voglio analizzare il file per il giorno appena trascorso e compilare un'e-mail con il numero di errori restituiti dal server Nginx.

Come posso accedere al file di output nella sezione postrotate / endscript di logrotate?


Puoi approfondire di più?
Khaled,

Fatto. Scusa, ho pensato che fosse abbastanza chiaro. :)
ibz,

Risposte:


4

Non sono a conoscenza di eventuali variabili che è possibile utilizzare se è quello che stai cercando. Tuttavia, subito dopo aver ruotato il registro, dovresti conoscere con precisione il nome su cui è stato ruotato il file in base alla configurazione che hai impostato per la rotazione ( /var/log/somefile.1o simili).

Forse sarebbe più facile rispondere se descrivi il problema reale che stai cercando di risolvere?


Pensavo che il problema fosse irrilevante. Lo ha spiegato in modo più dettagliato ora. Sì, posso semplicemente usare la data per ottenere il nome del file, ma speravo di riuscire a farlo attraverso qualche variabile o qualcosa del genere, che avrebbe più senso.
ibz,

3
Sembra che Larks abbia colpito esattamente quello che volevi. $ 1 è la variabile che stai cercando.
segna il

17

Se non si utilizza la direttiva "sharedscripts", lo script postrotate riceve, come $ 1, il file che ha attivato la rotazione del registro. Ciò potrebbe essere utile se stai cercando di utilizzare uno script generico con più stanze logrotate. Cioè, dato qualcosa del genere:

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

Se è necessario ruotare i file corrispondenti, lo script verrà chiamato con $ 1 impostato su "/var/log/sample1.log", "/var/log/sample2.log" o "/var/log/sample3.log "come appropriato. È quindi possibile aggiungere ".1" per trovare il file che è stato appena ruotato.

Se usi l'opzione "sharedscripts", lo script verrebbe chiamato con $ 1 impostato su "/var/log/sample1.log /var/log/sample[23×.log" (che ti aiuterà a identificare una particolare stanza ma non il file esatto).

Spero che questo ti dia un punto di partenza. Si noti che funzionerà solo per logrotate> v3.7.5.


1
Maneggevole. In realtà, sia lo script pre che post-rotazione sembrano ricevere il nome del file ruotato come $ 1, che è esattamente quello che la domanda chiede.
segna il

1
@mark lo script riceve il nome del file di input , non il file di output
kbolino,
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.