Linux에서 oops는 정보 프롬프트인 "놀라움"을 의미합니다. 즉, 시스템에서 실행 중인 무언가가 커널에서 지정한 규칙을 위반한다는 의미입니다. oops는 커널 개발자가 오류를 찾고 오류를 찾는 데 도움이 될 수 있는 충돌 서명 "충돌 서명"을 생성합니다. 코드 품질을 향상시킵니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
Linux 커널은 여러분을 지켜보고 있으며, 정상적인 커널 동작을 위반하는 시스템에서 실행 중인 무언가를 감지하면 시스템을 종료하고 "죄송합니다"를 발생시킵니다!
Linux 시스템에서 실행되는 프로세스를 확인해보면 “kerneloops”라는 프로세스가 궁금할 것입니다. 다시 한번 말씀드리지만, "커네 루프"가 아니라 "커널 죄송합니다"입니다.
솔직히 말해서 "앗"은 비정상적인 동작을 보이는 Linux 커널의 일부입니다. 무슨 잘못이라도 했나? 아마도 그렇지 않을 것입니다. 하지만 뭔가 잘못되었습니다. 그리고 뭔가 잘못된 프로세스가 CPU에 의해 종료되었을 수도 있습니다. 무엇보다도 최악의 경우 커널에서 오류가 발생하고 시스템이 갑자기 종료될 수 있습니다.
"oops"는 약어가 아니라는 점에 유의하세요. 이는 "객체 지향 프로그래밍 및 시스템" 또는 "절차적 사양을 벗어남"과 같은 것을 의미하지 않습니다. 이는 마치 와인 한 잔을 떨어뜨렸거나 고양이를 밟은 것과 같은 말 그대로 "죄송합니다"입니다. 이런! "oops"의 복수형은 "oopses"입니다.
죄송합니다. 시스템에서 실행 중인 무언가가 올바른 동작에 대한 커널 규칙을 위반한다는 의미입니다. 어쩌면 코드가 허용되지 않는 코드 경로를 사용하려고 하거나 잘못된 포인터를 사용하려고 할 수도 있습니다. 그것이 무엇이든 항상 프로세스의 잘못된 동작을 모니터링하는 커널은 특정 프로세스를 차단하고 콘솔에 /var/log/dmesg
메시지를 기록할 것입니다. /var/log/kern.log. /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
시스템에서 실행되는 kerneloops 프로세스는 다음과 같습니다. rrreee
프로세스가 루트가 아닌 "kernoops"라는 사용자에 의해 실행되며 실행하는 데 시간이 거의 걸리지 않습니다. 실제로 이 특정 사용자에게 할당된 유일한 작업은 kerneloops를 실행하는 것입니다. 🎜rrreee🎜Linux 시스템에 kerneloops(예: Debian)가 포함되어 있지 않으면 추가하는 것을 고려할 수 있습니다. 자세한 내용은 이 데비안 페이지를 확인하세요. 🎜🎜앗 언제 주목해야 할까요? 🎜🎜일반 죄송합니다. 별거 아닙니다. 이는 부분적으로 특정 프로세스의 역할에 따라 달라집니다. oops의 카테고리에 따라서도 다릅니다. 🎜🎜일부 오류는 심각하여 시스템 패닉을 일으킬 수 있습니다. 기술적으로 시스템 패닉은 죄송(즉, 더 심각한 오류)의 하위 집합입니다. 커널이 감지한 문제가 심각하여 커널이 데이터 손실이나 기타 시스템 손상을 방지하기 위해 실행을 즉시 중지해야 한다고 생각할 때 발생합니다. 따라서 불일치로 인해 가용성 또는 신뢰성이 저하되는 것을 방지하려면 시스템을 일시 중지했다가 다시 시작해야 합니다. 따라서 시스템은 실제로 복구할 수 없는 손상으로부터 자신을 보호하기 위해 패닉 상태가 됩니다. 🎜🎜간단히 말해서, 모든 커널 패닉은 죄송하지만 모든 오류가 커널 패닉인 것은 아닙니다. 🎜🎜/var/log/kern.log
및 관련 회전 로그(/var/log/kern.log.1
, /var/log/kern . log.2
등)에는 커널에서 생성되고 syslog에서 처리되는 로그가 포함됩니다. 🎜🎜kernelloops 프로그램은 기본적으로 오류 메시지를 수집하고 http://oops.kernel.org/에 제출하며, 여기에서 오류 메시지가 분석되어 커널 개발자에게 제공됩니다. 이 프로세스에 대한 구성 세부사항은 /etc/kerneloops.conf 파일에 지정됩니다. 다음 명령을 사용하면 쉽게 설정을 볼 수 있습니다. 🎜rrreee🎜 위(기본) 설정에서는 커널 문제를 제출할 수 있지만 사용자에게 권한을 얻어야 합니다. allow-submit = Always
로 설정하면 사용자에게 묻지 않습니다. 🎜🎜커널 문제 디버깅은 Linux 시스템 작업을 위한 고급 기술 중 하나입니다. 다행스럽게도 대부분의 Linux 사용자는 오류나 커널 패닉을 거의 또는 전혀 경험하지 않습니다. 그러나 kerneloops와 같은 프로세스가 시스템에서 수행하는 작업을 알고, 보고할 내용과 시스템에서 심각한 커널 충돌이 발생하는 시기를 아는 것도 좋습니다. 🎜🎜관련 추천: "🎜Linux 비디오 튜토리얼🎜"🎜위 내용은 리눅스가 뭐야 이런?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!