GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Mein Prozess wurde beendet, aber ich kann die Kernel-Benachrichtigung nicht verstehen

SAK bedeutet in diesem Fall wirklich Secure Attention Key . Die Nachricht, die Sie sehen, ist eine Kernel-Nachricht, die in drivers/tty/tty_io.c definiert ist. SAK ist eine Tastenkombination, die eine sichere Anmeldung für einen Benutzer auf der Konsole gewährleistet. Unter Linux stellt SAK dies sicher, indem es alle Prozesse beendet, die mit dem Terminal verbunden sind, auf dem SAK aufgerufen wird. Es wird erwartet, dass init wird dann den vertrauenswürdigen Anmeldeprozess wie getty neu starten gefolgt von login oder X-Server mit Display-Manager .

Die aufgelisteten PIDs sind tatsächlich PIDs von Threads Ihrer Anwendung CX_SC3 die von SAK getötet wurden.

fd#n opened to the tty bedeutet, dass der beendete Prozess/Thread den Dateideskriptor n hatte für das Terminal geöffnet, auf dem der SAK aufgerufen wurde.

Unter Linux gibt es zwei Möglichkeiten, SAK aufzurufen:

  1. Durch die magische SysRq-Taste - typischerweise Alt +SysRq +K (virtuelles Terminal) oder Break K (serielle Konsole). Dies ist nicht Ihr Fall, da Sie bereits versucht haben, die magische SysRq zu deaktivieren von echo 0 > /proc/sys/kernel/sysrq und Senden des Break K zufällige Reihenfolge ist unwahrscheinlich.

  2. Durch eine definierte Tastenfolge (virtuelles Terminal) oder das Break-Signal (serielle Konsole). Die SAK-Verfügbarkeit auf einer seriellen Konsole wird durch setserial gesteuert .

Das Unterbrechungssignal auf einer seriellen Leitung ist das kontinuierliche Senden von Abstandswerten über einen längeren Zeitraum als die Zeichensendezeit (einschließlich Start-, Stopp- und Paritätsbits). In Ihrem Fall ist es sehr wahrscheinlich, dass der Zustand des Break-Signals beim Herunterfahren Ihres Host-Computers auftritt. Bitte versuchen Sie, den SAK an Ihrem seriellen Anschluss auf dem Zielgerät mit setserial auszuschalten :

setserial /dev/ttyS0 ^sak

Sie können den SAK-Funktionsstatus an der seriellen Schnittstelle mit setserial -g /dev/ttyS0 überprüfen . Wenn es eingeschaltet ist, wird SAK angezeigt nach Flags: . Für die automatische Einstellung der Option nach dem Booten siehe die Startskripte, die auf BusyBox-Systemen normalerweise /etc/init.d/rcS sind und /etc/rc.d/S* oder überprüfen Sie /etc/inittab für andere Möglichkeiten.


Ich habe es geschafft, das Problem mit Hilfe von Pabouks Antwort zu lösen. Die codebasierte Lösung, die ich endlich entdeckt habe und die SAK zulässt Das Flag, das beim Öffnen mit der Userspace-API an der seriellen Schnittstelle gesetzt/nicht gesetzt werden soll, finden Sie hier auf Stackoverflow. Wie kann ich die SAK-Option der seriellen Schnittstelle unter Linux mit der Userspace-API deaktivieren?


Linux
  1. Der maximale Wert der Prozess-ID?

  2. Herausfinden, welcher Prozess von Linux OOM Killer getötet wurde

  3. Wie überprüfe ich HZ im Terminal?

  4. Wie starte ich GUI-Linux-Programme von der Befehlszeile aus, aber getrennt von der Befehlszeile?

  5. Verwendet der Linux-Kernel 3.x den CFS-Prozessplaner?

Analysieren Sie den Linux-Kernel mit ftrace

Meine Linux-Story:Linux lernen in den 90ern

Die maximal geöffneten Dateien pro Prozess können nicht mit sysctl geändert werden

Was ist der Unterschied zwischen nicht präemptivem, präemptivem und selektivem präemptivem Kernel?

Welche Datei in /proc wird vom Kernel während des Bootvorgangs gelesen?

Wie behält Linux die Kontrolle über die CPU auf einem Single-Core-Rechner?