È possibile eseguire manualmente un controllo logrotate?


541

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


3
Il problema con logrotate è che ha un file di configurazione globale e NON consente di eseguire un singolo file di sub-configurazione di rotazione del registro mentre si applicano ancora le opzioni impostate nel file di configurazione globale. Cioè non ha un buon modo per eseguire solo UN controllo del file di rotazione del registro, esattamente come farebbe ogni notte da cron. Potrebbe avere un'opzione "limite a questi file di registro" o, meglio ancora, "eseguire la configurazione globale, ma includere solo questo file di sub-configurazione".
anthony,

Risposte:


717

Sì: logrotate --force $CONFIG_FILE


115
nota che --forceruoterà il / i file / i anche se non soddisfano i criteri specificati come dimensione minima, età, ecc.
xofer

4
Se si inserisce il file di configurazione logrotate in /etc/logrotate.d/custom.conf significa questo, non è necessario specificare una dimensione / ora in cui il registro dovrebbe ruotare automaticamente? O dovresti posizionare la configurazione in una cartella diversa se non intendi farla ruotare automaticamente?
Damainman,

18
Il criterio "notifempty" non viene ignorato da "--force". Questo mi ha sconcertato per un po ', quindi lo cito come un'eccezione alla dichiarazione @xofer.
thelogix,

16
Puoi semplicemente ruotare tutto con logrotate --force /etc/logrotate.d/(solo il nome della directory)
fcm

1
È vero che --forceforzerà la rotazione anche se i file non soddisfano i criteri (età, dimensione, ecc.), Ma tieni presente che questo è l'unico modo per individuare i problemi reali che logrotate -dnon emergerebbero (ad esempio, se il server si stava esaurendo lo spazio a causa del logrotate non funzionava da mesi ... e grazie a --forceho capito che c'erano degli File existserrori. Ho cancellato manualmente quei file e ora la rotazione funziona di nuovo correttamente!
lucaferrario,

559

logrotate -d [your_config_file] invoca la modalità debug, dandoti una descrizione dettagliata di ciò che accadrebbe, ma lasciando intatti i file di registro.


81
quelli che sono venuti qui alla ricerca di una domanda come "come posso testare il mio logrotate conf?" può prendere questo come una risposta, in quanto PROVA solo il conf
kommradHomer

non rovinato dal tuo approccio, ci ho provato logrotate --forcee funziona bene.
Benyamin Jafari,

122

Se si desidera eseguire forzatamente una singola directory specifica o i file di registro del daemon, di solito è possibile trovare la configurazione /etc/logrotate.de funzioneranno autonomamente.

Tieni presente che la configurazione globale specificata in /etc/logrotate.confnon verrà applicata, quindi in questo caso dovresti assicurarti di specificare tutte le opzioni desiderate nel /etc/logrotate.d/[servicename]file di configurazione.

Puoi provarlo con -dper vedere cosa sarebbe successo:

logrotate -df /etc/logrotate.d/nginx

Quindi puoi eseguire (usando nginx come esempio):

logrotate -f /etc/logrotate.d/nginx

E i soli registri nginx verranno ruotati.


1
Questo va bene, ma perdi tutte le impostazioni globali che hai in "/etc/logrotate.conf". Ho scritto uno script per unire insieme i file logrotate globali e specifici, quindi utilizzarlo per risolvere questo problema. (vedi la mia risposta).
Anthony

L'uso logrotate -d /etc/logrotate.confverrà eseguito anche su tutti gli altri file conf inclusi.
wmassingham,

61

Potrebbe essere necessario eseguirlo in modalità verbose + force.

logrotate -vf /etc/logrotate.conf


36

Il modo per eseguire tutto logrotate è:

logrotate -f /etc/logrotate.conf

che eseguirà il file logrotate primario, che include anche le altre configurazioni logrotate


21

Immettere il comando seguente, il modo per eseguire logrotate specificato:

logrotate -vf /etc/logrotate.d/custom

Opzioni:

-v: mostra il processo

-f: corsa forzata

personalizzato: impostazione registro definita dall'utente

ad es .: mongodb-log

# mongodb-log rotate

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

plus1 per aver effettivamente fornito un esempio completo. PS Come possiamo determinare cosa logrotate effettivamente fa ai file ?
personal_cloud

7

modificare /var/lib/logrotate.status per ripristinare la data dell'ultima rotazione sul file di registro che si desidera verificare.

Quindi corri logrotate YOUR_CONFIG_FILE.

Oppure puoi usare il flag --force, ma la modifica di logrotate.status ti dà più precisione su ciò che fa e non viene ruotato.


Questo /var/lib/logrotate.statusfile non esiste su Debian Squeeze.
Lashae,

Prova / var / lib / logrotate / status. Non sono sicuro se questa è una cosa debian / redhat, o se ho messo "." dove avrei dovuto mettere "/".
Ben Aveling il

2

Creato uno script di shell per risolvere il problema.

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

Questo script eseguirà solo il singolo file di sub-configurazione logrotate trovato in "/etc/logrotate.d", ma includerà le impostazioni globali nel file di configurazione globale "/etc/logrotate.conf". Puoi anche usare altre otpioni per testarlo ...

Per esempio...

  logrotate_one -d syslog
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.