In Linux bedeutet „oops“ eine Informationsaufforderung, was bedeutet, dass etwas, das auf dem System ausgeführt wird, gegen die vom Kernel festgelegten Regeln verstößt; oops generiert eine Absturzsignatur „Absturzsignatur“, die Kernel-Entwicklern helfen kann, Fehler zu finden und Verbessern Sie die Codequalität.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.
Der Linux-Kernel beobachtet Sie und wenn er erkennt, dass auf dem System etwas läuft, das das normale Kernel-Verhalten verletzt, fährt er das System herunter und gibt ein „Ups“ aus!
Wenn Sie die auf Ihrem Linux-System laufenden Prozesse überprüfen, sind Sie vielleicht neugierig auf einen Prozess namens „kerneloops“. Nur zur Erinnerung: Es handelt sich um „Kernel-Ups“, nicht um „Kernel-Loops“.
Ehrlich gesagt sind „Ups“ Teil des Linux-Kernels, der abweichendes Verhalten zeigt. Hast du etwas falsch gemacht? Wahrscheinlich nicht. Aber etwas stimmt nicht. Und der Prozess, der etwas falsch gemacht hat, wurde möglicherweise von der CPU beendet. Das Schlimmste ist, dass der Kernel möglicherweise einen Fehler meldet und das System abrupt herunterfährt.
Bitte beachten Sie, dass „oops“ kein Akronym ist. Es bedeutet nicht so etwas wie „objektorientierte Programmierung und Systeme“ oder „außerhalb der prozeduralen Spezifikationen“. Es ist im wahrsten Sinne des Wortes „Ups“, als ob Sie gerade ein Glas Wein fallen ließen oder auf Ihre Katze getreten wären. Hoppla! Die Pluralform von „oops“ ist „oopses“.
oops bedeutet, dass etwas, das auf dem System ausgeführt wird, gegen die Regeln des Kernels zum korrekten Verhalten verstößt. Möglicherweise versucht der Code, einen nicht zulässigen Codepfad zu verwenden, oder verwendet einen ungültigen Zeiger. Was auch immer es ist, der Kernel – der ständig Prozesse auf Fehlverhalten überwacht – blockiert höchstwahrscheinlich einen bestimmten Prozess und schreibt eine Nachricht an die Konsole, /var/log/dmesg
, darüber, was er getan hat > oder /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
Der auf Ihrem System ausgeführte Kerneloops-Prozess sieht möglicherweise so aus: rrreee
Sie stellen möglicherweise fest, dass der Prozess nicht von Root, sondern von einem Benutzer namens „kernoops“ ausgeführt wird und dass die Ausführung nur sehr wenig Zeit in Anspruch nimmt. Tatsächlich besteht die einzige Aufgabe, die diesem bestimmten Benutzer zugewiesen ist, darin, Kerneloops auszuführen. 🎜rrreee🎜Wenn Ihr Linux-System nicht über Kerneloops verfügt (wie Debian), können Sie darüber nachdenken, es hinzuzufügen. Weitere Informationen finden Sie auf dieser Debian-Seite. 🎜🎜Wann sollte man auf ups achten? 🎜🎜Allgemeines ups ist keine große Sache. Dies hängt teilweise von der Rolle ab, die ein bestimmter Prozess spielt. Es hängt auch von der Kategorie von ups ab. 🎜🎜Einige Hoppla sind schwerwiegend und können eine Systempanik auslösen. Technisch gesehen sind Systempaniken eine Untergruppe von „Ups“ (d. h. schwerwiegendere „Ups“). Tritt auf, wenn das vom Kernel erkannte Problem so schwerwiegend ist, dass der Kernel davon ausgeht, dass er (der Kernel) die Ausführung sofort stoppen muss, um Datenverlust oder andere Schäden am System zu verhindern. Daher muss das System angehalten und neu gestartet werden, um zu verhindern, dass Inkonsistenzen zu Nichtverfügbarkeit oder Unzuverlässigkeit führen. Das System gerät also tatsächlich in Panik, um sich vor irreparablen Schäden zu schützen. 🎜🎜Kurz gesagt, alle Kernel-Paniken sind Hoppla, aber nicht alle Hoppla sind Kernel-Paniken. 🎜🎜/var/log/kern.log
und zugehörige Rotationsprotokolle (/var/log/kern.log.1
, /var/log/kern . log.2
usw.) enthält Protokolle, die vom Kernel generiert und von Syslog verarbeitet werden. Das 🎜🎜kerneloops-Programm sammelt Fehlerinformationen und sendet sie standardmäßig an http://oops.kernel.org/, wo sie analysiert und den Kernel-Entwicklern präsentiert werden. Konfigurationsdetails für diesen Prozess sind in der Datei /etc/kerneloops.conf angegeben. Sie können die Einstellungen einfach mit dem folgenden Befehl anzeigen: 🎜rrreee🎜 In den oben genannten (Standard-)Einstellungen können Kernel-Probleme gemeldet werden, der Benutzer muss jedoch eine Erlaubnis einholen. Wenn allow-submit = immer
eingestellt ist, wird der Benutzer nicht gefragt. 🎜🎜Das Debuggen von Kernel-Problemen ist eine der fortgeschritteneren Techniken für die Arbeit mit Linux-Systemen. Glücklicherweise erleben die meisten Linux-Benutzer selten oder nie Hoppla oder Kernel-Panik. Es ist jedoch auch gut zu wissen, was ein Prozess wie kerneloops auf Ihrem System tut, und zu wissen, was er möglicherweise meldet und wann Ihr System auf einen schwerwiegenden Kernelkonflikt stößt. 🎜🎜Verwandte Empfehlungen: „🎜Linux-Video-Tutorial🎜“🎜Das obige ist der detaillierte Inhalt vonWas ist Linux? Hoppla. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!