A seconda del tuo sistema operativo. Alcune (tutte?) distribuzioni Linux hanno una directory /etc/cron.hourly
dove puoi mettere cron job 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 impostazioni cron di una voce crontab (e devi specificare il nome utente).
Se usi uno di questi invece dello script di rotazione log standard in /etc/cron.daily/
dovresti copiare quello script lì e cp /dev/null
alla posizione originale. Altrimenti verrà riattivato da un aggiornamento della patch logrotate.
Per una corretta rotazione oraria, fai attenzione anche che il dateext
direttiva not impostare. In tal caso, per impostazione predefinita il primo file ruotato avrà l'estensione della data corrente come YYYYMMDD. Quindi, la seconda volta che logrotate si attiva nello stesso giorno, salta semplicemente la rotazione anche se size
la soglia è 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, il dateext
la direttiva è fornita di default in /etc/logrotate.conf
. Dopo aver rimosso o commentato quella riga, i file ruotati riceveranno semplicemente un numero progressivo come estensione fino a raggiungere rotate
valore. In questo modo è possibile eseguire più rotazioni al giorno.
Solo per aggiungere alla risposta di Nils, se si cambia la posizione del logrotate
script su una macchina Debian o Ubuntu, è probabilmente più sicuro usare dpkg-divert
invece di copiare semplicemente il file e copiare /dev/null
alla posizione originale, ad esempio:
dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
Un'altra opzione sarebbe l'aggiunta del comando logrotate nell'elenco crontab. Quindi verrà eseguito per ogni ora.
crontab -e
aggiungi sotto la riga nell'elenco crontab
0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file