Warum friert mein Terminal ein?

11

Manchmal, wenn mein Terminal einfriert und ich nicht tippen kann. Ich kann keine Ursachen identifizieren und auch keine Diagnose stellen. Irgendwelche Vorschläge?

Vielen Dank!

GNOME Terminal 2.30.2 unter Ubuntu 10.04

David LeBauer
quelle
2
Wenn das Terminal einfriert, wird es normalerweise von einer anderen Anwendung im Hintergrund verursacht, die zu viele Ressourcen verwendet, z. B. die CPU oder die Festplatten-E / A. Wenn Sie topin einem Terminal arbeiten, sollten Sie das Problem leicht finden können.
RolandiXor
@roland - klingt wie ein Catch-22, aber ein guter Rat, da ich manchmal, wenn ein Terminal eingefroren ist, ein anderes öffnen kann und es funktioniert.
David LeBauer
Ich weiß es schon gut? :) Es ist ein bisschen wie ein Catch-22, aber es funktioniert oft bei mir.
RolandiXor

Antworten:

14

Ein guter allgemeiner Weg, um mysteriöse Hänge zu diagnostizieren:

  1. Öffnen Sie ein (anderes) Terminal und verwenden Sie es ps axo pid,wchan:32,cmd, um die andere Prozess-ID zu finden
  2. Beachten Sie die wchanSpalte, in der angegeben wird, ob sie im Kernel steckt
  3. Führen Sie das sudo strace -p PIDEinfügen der PID dieses Prozesses aus. Fügen Sie das in einen Fehlerbericht oder eine Frage ein

Wenn es außer einem Bindestrich in der wchan-Spalte noch etwas gibt, dann ist der Prozess im Kernel, der etwas tut. Einige typische Werte:

  • futex_wait_queue_me - Warten auf einen Futex im selben Prozess auf einen anderen Thread
  • poll_schedule_timeout - Warten auf Netzwerk- oder Interprozesskommunikation oder nur eine Weile schlafen
  • pipe_wait - Lesen / Schreiben einer Pfeife

Es gibt Tausende von Möglichkeiten, daher kann ich nicht alle auflisten. Siehe Was ist der "Wartekanal" eines Prozesses? für mehr.

Poolie
quelle
Sehr nützlich für die allgemeine Fehlerverfolgung. Können Sie bitte Ihre Antwort mit einer ausführlichen Beschreibung aktualisieren? Welche Meldung in der wchan-Spalte zeigt ein Programm an, das im Kernel steckt?
Salih Emin
Danke, Salih. Vielleicht sollten wir noch eine Frage dazu haben, wie man generell Hänge diagnostiziert?
Poolie
Wenn Leute neugierig auf andere wchan-Werte sind, fügen Sie bitte einen Kommentar hinzu.
Poolie
Beliebig wchanbedeutet, dass der Prozess im Kernel wartet. Wenn es dort für eine lange Zeit und ohne guten Grund wie das Abhören von Netzwerk-Io bleibt, dann steckt es fest. ;)
Poolie
25

Haben Sie zufällig Strg + S gedrückt? Es ist die Terminal-Pause-Taste, die alle Ausgaben stoppt, bis Sie Strg-Q drücken, um fortzufahren.

Marius Gedminas
quelle