Pulizia dei file di registro in Linux


10

Sto usando una macchina virtuale kvm ubuntu 10.04 per testare alcune funzionalità di un modulo del kernel. Cerco i /var/logfile per osservare i messaggi del kernel su quel modulo.

Per iniziare da uno stato pulito, rimuovo i file di registro contenenti messaggi più vecchi eseguendo rm -rf /var/log/*e quindi riavviando la macchina virtuale. Tuttavia, dopo il riavvio, i nuovi file di registro contengono ancora quei vecchi messaggi di registro. Sono necessari circa 5-6 cicli di eliminazione dei file e riavvio della macchina virtuale per eliminare finalmente i messaggi dei file di registro.

Perché sta succedendo? Esiste un modo più semplice per pulire i file di registro?


logrotateè il software linux ufficiale sull'eliminazione e la rotazione automatica dei registri.
Hanan N.

Non volevo ruotare. Basta cancellarli.
contemplatingzombie,

1
Di seguito sembra funzionare per me: 1. rm -rf / var / log / * 2. dmesg -c 3. riavvio Dato che funziona, penso che il kernel legga i messaggi di registro precedenti durante l'avvio, li mantenga nel buffer e li scriva ai file ancora una volta durante il riavvio. Se qualcuno sa di più sul meccanismo attuale, si prega di aggiornare.
contemplatingzombie,

Risposte:


7

Il modo più semplice per pulire i vecchi registri è non rimuoverli.

Il modo migliore per pulire i log è logrotatecome Hanan N. sottolineato o:

find /var/log -type f -exec /bin/cp /dev/null {} \;

per ciascuno dei file di registro. Non sono esattamente sicuro delle voci di registro a cui ti riferisci dall'avvio precedente, ma se vuoi che questo /etc/rc.localvenga cancellato dopo l'avvio, puoi inserire il comando sopra nello script in modo che tutta la registrazione sia dopo l'avvio.

Normalmente, tuttavia, non si desidera cancellare i registri poiché sono il punto di partenza per la risoluzione dei problemi.


Penso che il comando 'cp' copierebbe tutti i registri sull'ultimo nome file espanso ... forse intendevi find /var/log/* -exec cp /dev/null {} \;:?
jjmontes,

@jjmontes Grazie. Non riuscivo a trovare il comando find al momento. :) Ma sarebbe effettivamente cambiato nel modo in cui ho modificato
Karlson il

3

Per quello che stai facendo, potrebbe essere meglio aggiungere un file di registro aggiuntivo per i messaggi del kernel. Alcuni daemon di registro ti consentiranno di eseguire corrispondenze sui record in fase di scrittura, in modo da ottenere solo i record appropriati nel tuo file. È quindi possibile ruotare, eliminare o rinominare i file tra le esecuzioni. (Se non si riavvia, potrebbe essere necessario inviare un segnale HUP al daemon di registro per farlo riaprire i suoi file.

Ci sono anche strumenti che estrarranno solo i nuovi record dal registro. L' logtailutilità dal logcheckpacchetto è una di queste utilità. Può essere eseguito con un file offset alternativo.

Esistono altri strumenti che controllano i registri per i record che corrispondono a un modello e li segnalano. Uno di questi potrebbe funzionare bene per te.


1

Questo sembra funzionare correttamente (su Ubuntu LTS 14.04) ruotando i log in un registro pulito e quindi eliminando le voci di registro più vecchie. È simile al metodo cp / dev / null, ma penso che sia più pulito. YMMV

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
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.