Domanda Dove stampa printk ()?


Solo una breve domanda sulla funzione printk () a livello di kernel, se chiamo questo dove verrà stampato il messaggio? (Sto usando Ubuntu su i386 arch con l'ultimo download del kernel)

non riesco a trovarlo da nessuna parte,

Se qualcuno potesse anche indicarmi la giusta direzione per una sorta di manuale per la funzione printk () sarebbe fantastico!


29
2017-10-27 18:52


origine


risposte:


dmesg dovrebbe essere visualizzato printk messaggi.


32
2017-10-27 18:56



printk i messaggi vengono inviati al buffer dei messaggi del registro del kernel, che può essere esposto in vari modi a seconda della configurazione del sistema. Il comando della shell dmesg li mostrerà e dovrebbero anche essere copiati in file in /var/log dal syslog demone. È possibile farli registrare su una console seriale o su un terminale virtuale in modalità testuale, ma non ricordo quanto sia off-line.


13
2017-10-27 18:56



Se ne hai messo un po ' printk() istruzioni nel modulo del kernel per eseguire il debug e provare a catturare gli output mentre vengono stampati, ciò che si sta cercando è klogd. Esegui a man klogd per più detenzione e opzioni.

Ecco uno script di wrapper per klogd che ho codificato un po 'di tempo fa per alleviare un po' di fastidiosi problemi di debug:

#!/bin/bash

function bashtrap()
{
        echo
        echo -n "[+] stopping klogd ... "
        pids=`ps aux | grep klogd | awk '{print $2}'`

        for pid in $pids
        do    
                kill SIGTERM $pid 2> /dev/null

        done
        echo "done"

        if [ $1 ]
        then
                exit;
        fi  
}

sync
bashtrap

klogd -x -f - -n -c 8 2>&1 1 | tee klog.txt & klog_pid=$!;

echo "[+] klogd started"
echo "[+] press ctrl+c to exit ... $klog_pid"

sync
trap "bashtrap 1" SIGINT

while [ 1 ]
do
        sleep 3
        echo -n "."
done

ps aux | grep klogd

3
2017-10-28 00:13



Il printk(9) la pagina man ha un molto un po 'di informazioni su di esso. In breve, viene inviato al buffer di log, dove un demone syslog può prenderlo e gestirlo. Viene anche inviato alla console se il suo loglevel è sufficientemente alto (vedi dmesg(1) per quel pezzettino).


2
2017-10-27 18:56



Cercare /dev/kmsg sul tuo sistema.


2
2018-06-02 06:43