只是关于内核级别的printk()函数的一个简短问题,如果我打电话给消息将打印到哪里?(我在最新内核下载的i386 arch上使用Ubuntu)printk()在哪里打印?
不能找到它在任何地方,
如果有人也可以指向我的某种手册的printk()函数正确的方向,这将是伟大的!
只是关于内核级别的printk()函数的一个简短问题,如果我打电话给消息将打印到哪里?(我在最新内核下载的i386 arch上使用Ubuntu)printk()在哪里打印?
不能找到它在任何地方,
如果有人也可以指向我的某种手册的printk()函数正确的方向,这将是伟大的!
dmesg
应显示printk
消息。
printk(9)
手册页有一个非常它的一点点信息。总之,它被发送到日志缓冲区,syslog守护程序可以在该日志缓冲区中进行处理。如果日志级别足够高,它也会发送到控制台(请参阅该位的dmesg(1)
)。
printk
消息进入内核日志消息缓冲区,根据系统配置可以以各种方式公开。 shell命令dmesg
将显示它们,并且它们也应该被syslog
守护程序复制到/var/log
中的文件中。可以让他们登录到串行控制台或文本模式的虚拟终端,但我不记得如何非正式。
如果您已经在内核模块中放置了一些printk()
语句进行调试并尝试捕获打印输出时的输出,那么您要查找的是klogd
。执行man klogd
以获取更多扣留和选项。
下面是klogd
我编码而回,以缓解一些快速调试疼痛包装脚本:
#!/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
查找/dev/kmsg
您的系统上。
在系统日志中发现它,谢谢 – molleman 2010-10-27 19:23:44