Logrotate rimuove i file in base all'ordine nell'elenco ordinato lessicalmente dei nomi dei file di registro ruotati e anche in base all'età del file (utilizzando l'ora dell'ultima modifica del file)
-
ruota è il numero massimo di file ruotati che potresti trovare. Se c'è un numero maggiore di file di registro ruotati, i loro nomi vengono ordinati lessicalmente e quelli lessicalmente più piccoli vengono rimossi.
-
massimo definisce un altro criterio per la rimozione dei file di registro ruotati. Qualsiasi file di registro ruotato, che è più vecchio del numero di giorni specificato, viene rimosso. Si noti che la data viene rilevata dall'ora dell'ultima modifica del file, non dal nome del file.
-
formato data consente una formattazione specifica per la data nei file ruotati. La pagina man rileva che il formato risulterà in un ordinamento lessicalmente corretto .
-
giorno di ieri consente di utilizzare le date nei nomi dei file di registro un giorno indietro.
Per mantenere un determinato numero di giorni nei file ruotati giornalmente (ad es. 7), devi impostare rotate al valore di 7 e puoi ignorare maxage , se i tuoi file vengono creati e ruotati davvero ogni giorno.
Se la creazione del registro non avviene per un paio di giorni, ad es. per 14 giorni, il numero di file di registro ruotati sarà sempre lo stesso (7).
maxage migliorerà la situazione negli scenari di "registri non prodotti" rimuovendo sempre i file troppo vecchi. Dopo 7 giorni di mancata produzione di log non saranno presenti file di log ruotati.
Non puoi usare dateformat come mostra OP, in quanto non è ordinabile lessicalmente. Fare pasticci con dateformat probabilmente comporterebbe la rimozione di altri file di registro ruotati di quelli che volevi realmente.
Suggerimento :esegui logrotate dalla riga di comando con -d opzione per eseguire una corsa a secco:vedrai cosa farebbe logrotate ma in realtà non fa nulla. Quindi esegui un'esecuzione manuale usando -v (verboso) in modo da poter confermare che ciò che è stato fatto è ciò che desideri.
Soluzione:pulire i log creati da cron
Il concetto è:
Consenti a cron di creare e aggiornare i file di registro, ma apportare piccole modifiche per creare file, seguendo logrotate i nomi dei file standard quando si utilizza dateext predefinito
/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log
Usa logrotate solo per rimuovere file di registro troppo vecchi
- mira a un file di registro non esistente
/data/tier2/scripts/logs/recover_standby_SID.log - usa
missingokper consentire la pulizia di logrotate - imposta
rotateabbastanza alto, per coprire il numero di file di registro da conservare (almeno 7, se ci sarà un file di registro "ruotato" al giorno, ma puoi tranquillamente impostarlo molto alto come 9999) - imposta
maxagea 7. Questo rimuoverà i file che hanno l'ultima modifica superiore a 7 giorni. dateextviene utilizzato solo per garantire, logrotate le ricerche di file meno recenti che sembrano ruotati.
Il file di configurazione di Logrotate sarebbe simile a:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 9999
maxage 7
dateext
}
Soluzione:ruota direttamente per logrotate una volta al giorno
Non sono sicuro di come viene creato il file di standby del ripristino del codice sorgente, ma presumo che Oracle o qualche tuo script venga aggiunto regolarmente o continuamente a un file /data/tier2/scripts/logs/recover_standby_SID.log
Il concetto è:
- ruota il file una volta al giorno di
logrotate - lavorare direttamente con il file di registro contenente i dati di ripristino
/data/tier2/scripts/logs/recover_standby_SID.log dailycauserà la rotazione una volta al giorno (in termini di modalità dicroncomprendedaily)rotatedeve essere impostato su 7 (o su un numero superiore).maxageimpostato su 7 (giorni)dateextper utilizzare il suffisso di data logrotate predefinitodateyesterdayusato per far sì che i suffissi di data nei file ruotati risalissero a un giorno indietro.missingokper pulire i file meno recenti anche quando non sono presenti nuovi contenuti da ruotare.
La configurazione di Logrotate sarebbe simile a:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 7
maxage 7
dateext
dateyesterday
}
Nota che potresti dover giocare un po' con copytruncate e altre opzioni simili relative a come viene creato il file di registro di origine da un processo esterno e come reagisce all'atto di rotazione.