GA黄金甲

你真的会调试 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 内核故障吗 ,看完这一篇后你会茅塞顿开的!的详细内容 ,更多请关注本网内其它相关文章!

免责说明:以上展示内容泉源于相助媒体、企业机构、网友提供或网络网络整理 ,版权争议与本站无关 ,文章涉及看法与看法不代表GA黄金甲滤油机网官方态度 ,请读者仅做参考 。本文接待转载 ,转载请说明来由 。若您以为本文侵占了您的版权信息 ,或您发明该内容有任何涉及有违公德、冒犯执法等违法信息 ,请您连忙联系GA黄金甲实时修正或删除 。

相关新闻

联系GA黄金甲

18523999891

可微信在线咨询

事情时间:周一至周五 ,9:30-18:30 ,节沐日休息

QR code
【网站地图】【sitemap】