什么是Linux中的OOPs
发布时间:2023-10-07 11:00:31 所属栏目:Linux 来源:
导读: 本篇内容介绍了“linux中oops指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
本篇内容介绍了“linux中oops指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 在linux中,oops表示“惊讶”,是一种信息提示,意味着系统上运行的某些东西违反了内核规定的规则;oops会生成一个崩溃签名“crash signature”,可以帮助开源的内核版本的开发人员轻松地找出错误并提高开发人员的代码质量。 本教程操作环境:linux5.9.8系统、Dell G3电脑。 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.phplog-file = /var/log/kern.logsubmit-pipe = /usr/share/apport/kernel_oops 在上面的(默认)设置中,内核问题可以被提交,但要求用户获得许可。如果设置为 allow-submit = always,则不会询问用户。 调试内核问题是使用 Linux 系统的更高级技巧之一。幸运的是,大多数 Linux 用户很少或从没有经历过 oops 或内核恐慌。然而,对kerneloops之类的程序在执行中的具体动作、可能汇报的内容及其与系统的交互具有了认知是非常有益的,同时明白当系统遭遇严重内核纷争时应如何应对也同样重要。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐