什么是 Linux “oops”?
创始人
2024-03-01 22:40:25
0

Linux 内核正在盯着你,当它检测到系统上运行的某些东西违反了正常内核行为时,它会关闭系统并发出一个“oops”!

如果你检查你的 Linux 系统上运行的进程,你可能会对一个叫做 “kerneloops” 的进程感到好奇。提示一下,它是 “kernel oops”,而不是 “kerne loops”。

坦率地说,“oops” 是 Linux 内核的一部分出现了偏差行为。你有做错了什么吗?可能没有。但有一些不对劲。而那个做了错事的进程可能已经被 CPU 结束。最糟糕的是,内核可能会报错并突然关闭系统。

请注意,“oops” 不是首字母缩略词。它不代表像“ 面向对象的编程和系统 object-oriented programming and systems ” 或“ 超出程序规范 out of procedural specs ” 之类的东西。它实际上就是“哎呀” (oops),就像你刚掉下一杯酒或踩在你的猫身上。哎呀! “oops” 的复数是 “oopses”。

oops 意味着系统上运行的某些东西违反了内核有关正确行为的规则。也许代码尝试采取不允许的代码路径或使用无效指针。不管它是什么,内核 —— 总是在监测进程的错误行为 —— 很可能会阻止特定进程,并将它做了什么的消息写入控制台、 /var/log/dmesg/var/log/kern.log 中。

oops 可能是由内核本身引起的,也可能是某些进程试图让内核违反在系统上能做的事以及它们被允许做的事。

oops 将生成一个 崩溃签名 crash signature ,这可以帮助内核开发人员找出错误并提高代码质量。

系统上运行的 kerneloops 进程可能如下所示:

kernoops 881 1 0 Feb11 ? 00:00:01 /usr/sbin/kerneloops

你可能会注意到该进程不是由 root 运行的,而是由名为 “kernoops” 的用户运行的,并且它的运行时间极少。实际上,分配给这个特定用户的唯一任务是运行 kerneloops。

$ sudo grep kernoops /etc/passwd
kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false

如果你的 Linux 系统不带有 kerneloops(比如 Debian),你可以考虑添加它。查看这个 Debian 页面了解更多信息。

什么时候应该关注 oops?

一般 oops 没什么大不了的。它在一定程度上取决于特定进程所扮演的角色。它也取决于 oops 的类别。

有些 oops 很严重,会导致 系统恐慌 system panic 。从技术上讲,系统恐慌是 oops 的一个子集(即更严重的 oops)。当内核检测到的问题足够严重以至于内核认为它(内核)必须立即停止运行以防止数据丢失或对系统造成其他损害时会出现。因此,系统需要暂停并重新启动,以防止任何不一致导致不可用或不可靠。所以系统恐慌实际上是为了保护自己免受不可挽回的损害。

总之,所有的内核恐慌都是 oops,但并不是所有的 oops 都是内核恐慌。

/var/log/kern.log 和相关的轮转日志(/var/log/kern.log.1/var/log/kern.log.2 等)包含由内核生成并由 syslog 处理的日志。

kerneloops 程序收集并默认将错误信息提交到 http://oops.kernel.org/,在那里它会被分析并呈现给内核开发者。此进程的配置详细信息在 /etc/kerneloops.conf 文件中指定。你可以使用下面的命令轻松查看设置:

$ sudo cat /etc/kerneloops.conf | grep -v ^# | grep -v ^$
[sudo] password for shs:
allow-submit = ask
allow-pass-on = yes
submit-url = http://oops.kernel.org/submitoops.php
log-file = /var/log/kern.log
submit-pipe = /usr/share/apport/kernel_oops

在上面的(默认)设置中,内核问题可以被提交,但要求用户获得许可。如果设置为 allow-submit = always,则不会询问用户。

调试内核问题是使用 Linux 系统的更高级技巧之一。幸运的是,大多数 Linux 用户很少或从没有经历过 oops 或内核恐慌。不过,知道 kerneloops 这样的进程在系统中执行什么操作,了解可能会报告什么以及系统何时遇到严重的内核冲突也是很好的。


via: https://www.networkworld.com/article/3254778/linux/what-is-a-linux-oops.html

作者:Sandra Henry-Stocker 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Linux内核进程管理进程...
前言:进程优先级实际上是系统对进程重要性的一个客观评...
2025-06-01 17:44:16
Anaconda的简单使用...
一、Anaconda安装图1 Anaconda官网Anaconda...
2025-05-29 22:09:25
更强更好用的chatgpt...
​介绍 new biying是一个新的搜索引擎,它可...
2025-05-29 10:20:38
Linux:内核调试方法之...
strace 【用途】 strace是一个功能强大的调试、分析、诊...
2025-05-28 17:55:03
CentOS 6安全升级指...
CentOS 6系统升级指南:走向安全与效率的必经之路 作为服务器...
2025-05-23 07:46:23
Asahi Linux 突...
IT之家 5 月 17 日消息,Asahi Linux 项目团队昨...
2025-05-21 11:47:06

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...