你真的会调试 Linux 内核故障吗,看完这一篇后你会茅塞顿开的!
Linux内核是操作系统的焦点,它控制对系统资源(例如:CPU、I/O装备、物理内存和文件系统)的会见。在指导历程中以及系统运行时,内核会将种种新闻写入内核环形缓冲区。这些新闻包括有关系统操作的种种信息。
内核环形缓冲区是物理内存的一部分,用于生涯内核的日志新闻。它具有牢靠的巨细,这意味着一旦缓冲区已满,较旧的日志纪录将被笼罩。
dmesg下令行适用程序用于在Linux和其他类似Unix的操作系统中打印和控制内核环形缓冲区。关于检查内核启动新闻和调试与硬件相关的问题很有用。
在本教程中,我们将先容dmesg下令的基础。
使用 dmesg 下令
dmesg下令的语法如下:
dmesg [OPTIONS] 在不带任何选项的情形下挪用时,dmesg将所有新闻从内核环形缓冲区写入标准输出:
登录后复制
$ dmesg
默认情形下,所有用户都可以运行dmesg下令。可是,在某些系统上,非 root 用户可能会限制对dmesg的会见。在这种情形下,挪用 dmesg 时您将收到如下过失新闻:
dmesg: readkernel buffer failed: Operation not permitted
内核参数kernel.dmesg_restrict指定非特权用户是否可以使用dmesg审查来自内核日志缓冲区的新闻。要删除限制,请将其设置为零:
$ sudo sysctl -w kernel.dmesg_restrict=0
通常,输出包括许多信息行,因此只能看到输出的最后一部分。要一次审查一页,请将输出通过管道传送到分页适用程序,例如less或more:
$ dmesg –color=always | less
其中的–color=always参数用于保存彩色输出。
若是要过滤缓冲区新闻,可能使用grep。例如,要仅审查与 USB 相关的新闻,请键入:
$ dmesg | grep -i usb
dmesg 从/proc/kmsg虚拟文件中读取内核天生的新闻。该文件提供了到内核环形缓冲区的接口,并且只能由一个历程翻开。若是系统上正在运行syslog历程,并且你实验使用cat或less下令读取文件,则下令将挂起。
syslog守护程序将内核新闻转储到/var/log/dmesg,因此你也可以使用该日志文件:
$ cat /var/log/dmesg
名堂化 dmesg 输出。
dmesg下令提供了许多选项,可资助你名堂化和过滤输出。
dmesg中最常用的选项之一是-H(–human),它将输出更容易读的效果。
$ dmesg -H
要打印人类可读的时间戳,请使用-T(–ctime选项):
$ dmesg -T [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
登录后复制
时间戳名堂也可以使用–time-format 选项设置,可以是ctime,reltime,delta,notime或iso。例如:要使用增量名堂,你可以输入:
$ dmesg –time-format=delta
你也可以组合两个或多个选项:
$ dmesg -H -T
要实时寓目dmesg下令的输出,请使用-w(–follow)选项:
$ dmesg –follow
过滤 dmesg 输出。
你可以将dmesg输出限制为给定的设施和品级。dmesg支持以下类型:
kern-内核新闻
user-用户级新闻
mail-邮件系统
daemon-系统守护程序
auth-清静/授权新闻
syslog-内部 syslogd 新闻
lpr-行式打印机子系统
news-网络新闻子系统
-f(–facility )选项允许你将输出限制为特定的装备,该选项接受一个或多个逗号脱离的功效。
例如,要仅显示内核和系统守护程序新闻,可以使用:
$ dmesg -f kern,daemon
每条日志新闻都与一个显示新闻主要性的日志级别相关联,dmesg支持以下日志级别:
emerg-系统无法使用
alert-必需连忙接纳步伐
crit-紧迫情形
err-过失条件
warn-忠言条件
notice-正常但主要的条件
info-信息性
debug-调试级新闻
-l(–level )选项允许你将输出限制为界说的级别,该选项接受一个或多个逗号脱离的级别。以下下令仅显示过失和严重新闻:
$ dmesg -l err,crit
扫除环形缓冲区
-C(–clear)选项可让您扫除环形缓冲区:
$ sudo dmesg -C
只有root或具有sudo特权的用户才华扫除缓冲区。
要在扫除之前打印缓冲区内容,请使用-c(–read-clear)选项:
$ sudo dmesg -c
若是要在扫除文件之前将目今dmesg日志生涯到文件中,你可以将输出重定向到文件:
$ dmesg > dmesg_messages
结论
dmesg下令允许你审查和控制内核环形缓冲区。对内核或硬件问题举行故障扫除时,它很是有用。
在终端中输入man dmesg,你可以获取有关所有可用dmesg选项的信息。
以上就是你真的会调试 Linux 内核故障吗,看完这一篇后你会茅塞顿开的!的详细内容,更多请关注本网内其它相关文章!