2012-07-10 17 views
7

Sto modificando il modulo kvm e ho aggiunto istruzioni printk nel codice del kernel.Dopo aver eseguito la macchina virtuale, printk mi dà l'indirizzo errato e altre informazioni sull'ospite OS.differenza tra dmesg e /var/log/kern.log

ho bisogno di generare la statistica da questo info.When Io uso dmesg che posso vedere solo fagliazione indirizzo nello spazio del kernel vale a dire il loro indirizzo sono al di sopra 0xC0000000. (Indirizzo faulting sono necessari quando VMEXIT accade per esempio si passa da ospite a modalità host)

Quando vedo le stesse statistiche in kern.log ottengo anche l'indirizzo di errore dallo spazio utente (sotto 0XC0000000). Quindi mi sembra che dmesg abbia una capacità limitata e le informazioni fornite sono un sottoinsieme di kern.log.
Il mio file kern.log è troppo grande per cancellare vecchi dati da kern.log perché i comandi di elaborazione del testo come grep, join, awk richiedono troppo tempo per essere eseguiti sul file.

Le mie domande sono:
Qual è la differenza tra dmesg e kern.log?
Come ridurre la dimensione del file kern.log come cron job? (Cancella tutti i dati aggiunti nelle ultime 24 ore)
Esiste un modo migliore per ottenere funzionalità di stampa dal kernel?

risposta

5

/var/log/kern.log e i suoi registri ruotati (/var/log/kern.log.1 /var/log/kern.log.2 ....) contiene i registri prodotti dal kernel e gestiti da syslog.

dmesg come spiega la pagina man è per:

dmesg viene usato per esaminare o controllare il ring buffer del kernel.

Infatti, visualizzerà gli ultimi 16392 ottetti di /var/log/kern.log dall'ultimo avvio.

+0

è ok per cancellare il contenuto .. di kern.log e kern.log.1 kern.log.1 è così grande che vi impiega 5 minuti per caricarlo ... non posso elaborare il file se sono così lunghi .... Stavo pensando di fare 'cat/dev/null> kern.log' e' cat/dev/null> kern.log.1' ... Va bene cancellare i dati del registro ??. – Deepthought

+2

@Deepthought sì è possibile cancellare quei file ma syslog manterrà solo gli ultimi 5 file. –

+0

Nella mia Ubuntu 16.04 l'output di 'dmesg' non ha quasi alcuna correlazione con gli ultimi 16002 ottetti di'/var/log/kern.log' (che ho ottenuto con 'tail -c 16392'). Alcune (poche) linee sono simili ma bisogna tener conto delle differenze nel formato di output, i campi mostrati, e non è chiaro quale tipo di flag o di post-processing 'awk' risulterebbero nella produzione di output che possa essere definito in modo pulito per essere lo stesso usando 'diff'. –