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 multilogproviene dal daemontoolspacchetto , ad esempio, allora non si fa nulla per ruotare i registri: niente script manuali, niente cronlavori. È sufficiente dire multilogche 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 svlogdproviene dal runitpacchetto , 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 rsyslogper 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 syslogdmodo di ruotare i registri, ancora previsto dai programmi di registrazione come syslog-ng ed esemplificato da strumenti come logrotatemenzionato djangofanin un'altra risposta qui, è in qualche modo più casuale. Uno esegue un cronlavoro 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 multiloge svlogdhanno 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 cronlavori, o persino un logrotatedemone, 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.