Sì, esiste un modo corretto: non cancelli affatto i registri. Li ruoti . La rotazione comporta il passaggio dell'output del registro in un nuovo file, con lo stesso nome, con i precedenti file di registro N conservati in un set di N nomi di file correlati.
Il modo in cui uno ruota i registri dipende da come li sta scrivendo in primo luogo. Questo è un punto spesso trascurato. Alcune delle risposte qui lo toccano almeno, menzionando che alcuni programmi di registrazione mantengono un descrittore di file aperto per il file di registro, quindi solo l'eliminazione del file non libererà lo spazio, o addirittura cambierà l'output in un nuovo file di registro.
Se il programma che scrive il file di registro multilog
proviene dal daemontools
pacchetto , ad esempio, allora non si fa nulla per ruotare i registri: niente script manuali, niente cron
lavori. È sufficiente dire multilog
che l'output del registro è indirizzato a una directory e manterrà esso stesso un set di N file con rotazione automatica e con limiti di dimensione in quella directory.
Se il programma che scrive i file di registro svlogd
proviene dal runit
pacchetto , per un altro esempio, vale lo stesso. Non devi fare nulla a parte puntare lo strumento in una directory. Manterrà esso stesso un insieme ruotato automaticamente e con dimensioni limitate di N file di registro in quella directory.
Se si utilizza rsyslog
per scrivere i file di registro, è possibile che il programma di registrazione venga arrestato dopo che il file di registro raggiunge una determinata dimensione ed esegue uno script . Devi scrivere il contenuto dello script, in realtà rinominare il file di registro ed eliminare i vecchi file di registro in base a vincoli di dimensione totale, ma almeno il programma di registrazione ha chiuso il file e messo in pausa la scrittura del registro mentre ciò accade.
Il vecchio syslogd
modo di ruotare i registri, ancora previsto dai programmi di registrazione come syslog-ng ed esemplificato da strumenti come logrotate
menzionato djangofan
in un'altra risposta qui, è in qualche modo più casuale. Uno esegue un cron
lavoro che rinomina periodicamente i file di registro e riavvia il demone di registrazione (usando qualunque supervisore di daemon in cui è in esecuzione). Il problema con questo, ovviamente, è che non impone un limite di dimensioni complessive. Nelle settimane lente è possibile ottenere N file di registro giornalieri molto piccoli, mentre nei giorni di grande affluenza è possibile ottenere 1 file di registro molto grande che supera di molto il limite di dimensioni.
Questo è il motivo per cui strumenti successivi e migliori come multilog
e svlogd
hanno opzioni di configurazione delle dimensioni dei file e, ovviamente, controllano le dimensioni dei file di registro. Il mondo ha appreso che il polling dei registri in base a una pianificazione con cron
lavori, o persino un logrotate
demone, lascia a Windows la dimensione errata delle dimensioni e che il posto giusto per avere questi controlli, e applicare così rigorosamente i limiti di dimensione definiti dall'amministratore in modo che i file di registro non inghiottono mai la partizione in cui si trovano, è nel programma che sta scrivendo i file in primo luogo.