¿Por qué mi terminal se está congelando?


11

A veces, cuando mi terminal se congela y no me deja escribir. No puedo identificar ninguna causa, ni cómo diagnosticar. ¿Alguna sugerencia?

¡Gracias!

GNOME Terminal 2.30.2 en Ubuntu 10.04


2
generalmente cuando el terminal se congela es causado por otra aplicación en segundo plano que usa demasiados recursos, como la CPU o la E / S de disco. Si se ejecuta topen una terminal, debería poder localizar el problema fácilmente.
RolandiXor

@roland: suena como un catch-22, pero un buen consejo ya que a veces cuando una terminal está congelada puedo abrir otra y funcionará.
David LeBauer

¿Yo se, verdad? :) Es un poco difícil de atrapar, pero a menudo funciona para mí.
RolandiXor

Respuestas:


14

Una buena forma general de diagnosticar cuelgues misteriosos:

  1. abra un terminal (otro) y úselo ps axo pid,wchan:32,cmdpara encontrar la otra identificación de proceso
  2. tenga en cuenta la wchancolumna, que debería decirle si está atascado en el núcleo
  3. ejecutar sudo strace -p PIDinsertando el pid de ese proceso; pegar eso en un informe de error o pregunta

Si hay algo aparte de solo un guión en la columna wchan, entonces el proceso está en el núcleo haciendo algo. Algunos valores típicos:

  • futex_wait_queue_me - esperando en un futex otro hilo en el mismo proceso
  • poll_schedule_timeout - esperando la comunicación de red o entre procesos, o simplemente durmiendo un rato
  • pipe_wait - leer / escribir una pipa

Hay miles de posibilidades, así que no puedo enumerarlas todas. Consulte ¿Qué es el "Canal de espera" de un proceso? para más.


Muy útil para el seguimiento de errores de uso general. ¿Puedes actualizar tu respuesta con una descripción extensa? ¿Qué mensaje en la columna wchan indica un programa que está atascado en el kernel?
Salih Emin

Gracias Salih ¿Quizás deberíamos tener otra pregunta sobre cómo en general diagnosticar cuelgues?
Poolie

Si la gente siente curiosidad por cualquier otro valor de wchan, agregue un comentario.
billar

Cualquiera wchansignifica que el proceso está esperando en el núcleo. Si permanece allí durante mucho tiempo y no tiene una buena razón para escuchar la red io, entonces está atascado. ;)
poolie

25

¿Presionó Ctrl + S por casualidad? Es la tecla de pausa del terminal que detiene toda la salida hasta que presione Ctrl-Q para reanudar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.