Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dmesg可以在Linux中打印截断的行吗?_Linux_Kernel - Fatal编程技术网

dmesg可以在Linux中打印截断的行吗?

dmesg可以在Linux中打印截断的行吗?,linux,kernel,Linux,Kernel,我将通过以下方式监控dmesg: dmesg -c 每1秒。我将在输出中查找特定字符串,然后根据找到的字符串执行操作 然而,我担心这种情况: 内核将20个字符的消息打印到dmesg环形缓冲区中,例如: printk(“你好,世界!!!!!!!”) 就在内核打印特定字符时。。。假设第10个字符,用户调用dmesg 当我们读取缓冲区时,最后一行不是完全由内核编写的 “dmesg-c”将打印什么 a) 仅包含前10个字符的截断行(Hello Worl) b) 省略挂起的行 然后,在“dmesg-

我将通过以下方式监控dmesg:

dmesg -c
每1秒。我将在输出中查找特定字符串,然后根据找到的字符串执行操作

然而,我担心这种情况:

  • 内核将20个字符的消息打印到dmesg环形缓冲区中,例如:

    printk(“你好,世界!!!!!!!”)

  • 就在内核打印特定字符时。。。假设第10个字符,用户调用dmesg

  • 当我们读取缓冲区时,最后一行不是完全由内核编写的

“dmesg-c”将打印什么

a) 仅包含前10个字符的截断行(Hello Worl)

b) 省略挂起的行

然后,在“dmesg-c”的下一个调用中,它会

a) 打印挂起行缺少的10个字符(d!!!!!!!),或

b) 打印完整的挂起行

这让我担心,因为我会寻找特定的字符串,如果它们被截断,那么我的想法就行不通了

我使用的是Linux 2.6.31,dmesg通过busybox运行:

rwxrwxrwx  1 root   root       7 Jun  3 07:36 dmesg -> busybox
BusyBox v1.19.3 () multi-call binary.
Usage: dmesg [-c] [-n LEVEL] [-s SIZE]
我已经运行dmesg好几次了,我从来没有注意到截断的行,但最好知道这是否只是运气好


谢谢。

如果您有一个运行的
syslogd
,并且它正在记录内核消息,您可能会发现只监视它的输出文件(例如
tail-F/var/log/kern.log
)更容易。或者配置syslog守护进程来完成您想要的操作-
rsyslog
有一些非常好的方法。@TobySpeight我们的内核将所有内容都记录在/var/log/messages中。日志非常大,我更喜欢grep一个较小的输入,比如清理后的dmesg输出。我们正在运行嵌入式Linux。另外,我会对消息文件提出同样的问题,它是否包括截断的行?将内核消息记录到
/var/log/messages
?如果它是一个相当现代的系统日志,那么它应该能够为您将消息的子集复制到另一个文件中。例如,我的Debian系统有,它支持对消息内容进行过滤。它还支持记录到数据库,所以您甚至可以在需要时使用触发器。如果您有一个
syslogd
正在运行,并且它正在记录内核消息,您可能会发现只监视其输出文件(例如
tail-F/var/log/kern.log
)更容易。或者配置syslog守护进程来完成您想要的操作-
rsyslog
有一些非常好的方法。@TobySpeight我们的内核将所有内容都记录在/var/log/messages中。日志非常大,我更喜欢grep一个较小的输入,比如清理后的dmesg输出。我们正在运行嵌入式Linux。另外,我会对消息文件提出同样的问题,它是否包括截断的行?将内核消息记录到
/var/log/messages
?如果它是一个相当现代的系统日志,那么它应该能够为您将消息的子集复制到另一个文件中。例如,我的Debian系统有,它支持对消息内容进行过滤。它还支持记录到数据库,所以您甚至可以在需要时使用触发器。如果您有一个
syslogd
正在运行,并且它正在记录内核消息,您可能会发现只监视其输出文件(例如
tail-F/var/log/kern.log
)更容易。或者配置syslog守护进程来完成您想要的操作-
rsyslog
有一些非常好的方法。@TobySpeight我们的内核将所有内容都记录在/var/log/messages中。日志非常大,我更喜欢grep一个较小的输入,比如清理后的dmesg输出。我们正在运行嵌入式Linux。另外,我会对消息文件提出同样的问题,它是否包括截断的行?将内核消息记录到
/var/log/messages
?如果它是一个相当现代的系统日志,那么它应该能够为您将消息的子集复制到另一个文件中。例如,我的Debian系统有,它支持对消息内容进行过滤。它还支持记录到数据库,所以您甚至可以在需要时使用触发器。