我在Ubuntu 10.04機器上編寫了一個簡單的hello-world模塊。加載和卸載模塊時,printk應該記錄來自以下hello_world和bye_world函數的消息。爲什麼系統日誌文件中的內核日誌消息(或那些重定向到終端的)只有一個'消息'在後面?
static int hello_world()
{
printk(KERN_INFO "Hello, beautiful world");
return 0;
}
static void bye_world()
{
printk(KERN_INFO "Good-bye kernel uncle");
}
module_init(hello_world);
module_exit(bye_world);
然而,實際上插入和取出hello.ko模塊時,我看到打印的終端(I它重定向到當前終端)上的消息是恰好一個消息的後面。
# rmmod hello.ko # Jul 8 16:34:02 panchavati kernel: [64599.954113] Hello, beautiful world # insmod hello.ko # Jul 8 16:34:57 panchavati kernel: [65456.367422] Good-bye kernel uncle
從dmesg的輸出,I可以看到下一個消息條目(對應於用insmod)已被已經登錄,只是它沒有被打印尚未。
[email protected]:~$ dmesg | tail -2 [65456.367422] Good-bye kernel uncle [65511.198299] Hello, beautiful world
入口[65511.198299]
有沒有在內核日誌,但只被印上一個條目[65456.367422] Good-bye kernel uncle
。爲什麼這樣?
我之前認爲在/etc/syslog.conf中使用'-' specifier可能需要做些什麼(它會在每次寫入後阻止同步),但刪除它也不起作用。