Come posso impostare logrotate per ruotare i log ogni ora?


23

Secondo l'Amministrazione manuale Unix e Linux e man, logrotate ha opzioni per daily, weeklye monthly, ma c'è un modo per aggiungere un hourlyopzione?

Questo post del blog menziona che puoi impostare size 1e rimuovere l'opzione time (ad esempio:) dailye quindi chiamare manualmente logrotatecon cron- suppongo qualcosa del genere

logrotate -f /etc/logrotate.d/my-hourly-file

ma esiste una soluzione più elegante per ruotare i tronchi ogni ora?


Sicuro. Qual è il tuo sistema operativo, quale versione?
Nils,

ubuntu 10.04 e 11
cwd

Risposte:


20

A seconda del sistema operativo in uso. Alcune (tutte?) Distribuzioni Linux hanno una directory in /etc/cron.hourlycui è possibile eseguire processi cron da eseguire ogni ora.

Altri hanno una directory /etc/cron.d/. Lì puoi inserire cron-job che devono essere eseguiti come qualsiasi utente speciale con le solite cron-settings di una voce crontab (e devi specificare il nome utente).

Se si utilizza uno di questi invece dello script di rotazione standard del registro, /etc/cron.daily/è necessario copiarlo lì e cp /dev/nullnella posizione originale. Altrimenti verrà riattivato da un aggiornamento patch logrotate.

Per una corretta rotazione oraria, assicurarsi anche che la dateextdirettiva non sia impostata. In tal caso, per impostazione predefinita il primo file ruotato otterrà l'estensione della data corrente come AAAAMMGG. Quindi, la seconda volta che logrotate si attiva nello stesso giorno, salta semplicemente la rotazione anche se la sizesoglia è stata superata.

Il motivo è che il nuovo nome del file da ruotare esiste già e logrotate non aggiunge il contenuto al vecchio file esistente. Ad esempio su RHEL e CentOS, la dateextdirettiva è data di default in /etc/logrotate.conf. Dopo aver rimosso o commentato quella riga, i file ruotati otterranno semplicemente un numero in esecuzione come estensione fino a raggiungere il rotatevalore. In questo modo è possibile eseguire più rotazioni al giorno.


5

Solo per aggiungere alla risposta di Nils, se si modifica la posizione dello logrotatescript su un box Debian o Ubuntu, è probabilmente più sicuro da usare dpkg-divertinvece di copiare il file e copiare /dev/nullnella posizione originale, ad esempio:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

Non lo sapevo e utilizzo Ubuntu da anni. Grazie. :)
Vaughany,

2

Un'altra opzione sarebbe l'aggiunta del comando logrotate all'elenco crontab. Quindi verrà eseguito per ogni ora.

crontab -e

aggiungi sotto la linea nell'elenco crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
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.