2010-01-22 11 views
404

È possibile eseguire manualmente un'iterazione di logrotate senza pianificarla su un intervallo?È possibile eseguire manualmente un controllo logrotate?

+2

Il problema con logrotate è che ha un file di configurazione globale e NON consente di eseguire un singolo registro ruotare il file di configurazione secondaria mentre si applicano le opzioni impostate nel file di configurazione globale. Questo non ha un buon modo per eseguire un solo controllo del file di rotazione del registro, esattamente come se fosse eseguito ogni notte da cron. Potrebbe fare con l'opzione 'limit a questi file di registro', o meglio ancora, 'eseguire la configurazione globale, ma includere solo questo file di sotto-configurazione'. – anthony

risposta

537

Sì: logrotate --force $CONFIG_FILE

+82

nota che '--force' ruoterà i file anche se non soddisfano i criteri specificati come minsize, age, ecc. – xofer

+4

Se si posiziona il file di configurazione logrotate in /etc/logrotate.d/custom.conf Questo significa che non è necessario specificare una dimensione/tempo quando il registro deve ruotare automaticamente? O dovresti posizionare la configurazione in una cartella diversa se non intendi farla ruotare automaticamente? – Damainman

+1

+1 Grazie, questo è esattamente quello che cerco – Mike

378

logrotate -d [your_config_file] invoca modalità di debug, dando una descrizione dettagliata di ciò che sarebbe accaduto, ma lasciando intatti i file di log.

+42

quelli che sono venuti qui cercano la risposta di una domanda come "come posso testare il mio logrotate conf?" può prendere questo come risposta, in quanto semplicemente TESTS conf – kommradHomer

+1

questa dovrebbe essere la risposta accettata – storm

29

Il modo per eseguire tutti logrotate è:

logrotate -f /etc/logrotate.conf 

che verrà eseguito il file logrotate primario, che comprende le altre configurazioni logrotate così

50

Si consiglia di eseguirlo in vigore verbose + modalità.

logrotate -vf /etc/logrotate.conf

87

Se si vuole forzare a conduzione una singola directory specifica o file di log del demone, di solito si può trovare la configurazione in /etc/logrotate.d, e lavoreranno standalone.

Ricordare che la configurazione globale specificata in /etc/logrotate.conf non verrà applicata, quindi se si esegue questa operazione è necessario assicurarsi di specificare tutte le opzioni desiderate nel file di configurazione /etc/logrotate.d/[servicename] in modo specifico.

Si può provare con -d per vedere cosa sarebbe successo:

logrotate -df /etc/logrotate.d/nginx 

Quindi è possibile eseguire (usando nginx come esempio):

logrotate -f /etc/logrotate.d/nginx 

E i registri nginx solo sarà ruotato.

19

Eseguire il seguente comando, il modo di eseguire logrotate specificato:

logrotate -vf /etc/logrotate.d/custom 

Opzioni:

-v: mostrare il processo

-f: costringendo run

personalizzato: impostazione di registro definita dall'utente

ad es .: mongodb-log

# mongodb-log rotate 

/data/var/log/mongodb/mongod.log { 
    daily 
    dateext 
    rotate 30 
    copytruncate 
    missingok 
} 
+0

plus1 per fornire effettivamente un esempio completo. PS Come possiamo determinare [cosa fa effettivamente il logrotato ai file] (https://stackoverflow.com/questions/46578307/)? –

1

Creato uno script di shell per risolvere il problema.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Questo script verrà eseguito solo il file di configurazione sub-singolo logrotate trovato in "/etc/logrotate.d", ma includono le impostazioni globali da nel file di configurazione globale "/etc/logrotate.conf ". È inoltre possibile utilizzare le altre schermate per testarlo ...

Per esempio ...

logrotate_one -d syslog 
0

modificare/var/lib/logrotate.stato per reimpostare la data dell'ultima rotazione sul file di registro che si desidera testare.

Quindi eseguire logrotate YOUR_CONFIG_FILE.

Oppure è possibile utilizzare il flag --force, ma la modifica logrotate.status offre maggiore precisione su ciò che viene ruotato e non viene ruotato.