Solucionar cuelgues de sistema en Linux

Normalmente, cuando sufrimos un cuelgue de sistema en Linux suele ser porque el servidor X tuvo un fallo. Estos casos se pueden distinguir perfectamente porque el PC deja de responder a cualquier entrada de datos (las combinaciones de teclado no funcionan y el puntero del ratón no se mueve). La solución más sencilla en estos casos es el uso de la combinación Ctrl+Alt+Retroceso, que reinicia el servidor X y nos devuelve a la pantalla de inicio de sesión, perdiendo todos el trabajo que no hubiésemos guardado, obviamente ya que eso siempre pasa con los cuelgues generales del sistema (los usuarios de Windows ya estarán muy acostumbrados a eso). Sin embargo, en algunas distribuciones de Linux como Ubuntu, esta combinación de teclas se encuentra deshabilitada, por lo que tendremos que usar alguna de las siguientes alternativas:

Aunque el servidor X esté colgado, deberíamos poder acceder a alguna de las 6 terminales virtuales libres que tiene el sistema, ya que la única que no responde es la número 7, que es donde se ejecuta el servidor X. Usando la combinación Ctrl+Alt+F1 accederemos al terminal virtual 1, con la Ctrl+Alt+F2 al terminal 2, etc. Accediendo a alguno de los terminales virtuales conseguiremos una pantalla de linea de comandos desde la que podremos reiniciar el servidor X. Lo primero será poner nuestro nombre de usuario y contraseña, y después ejecutar el siguiente comando:

Si usas KDE:

sudo /etc/init.d/kdm restart

Si usas Gnome

sudo /etc/init.d/gdm restart

Si usas otro escritorio (o no sabes cual usas)

cat /etc/X11/default-display-manager

Esto nos mostrará la ruta de nuestro «display manager», y será algo parecido a esto:

/usr/bin/nombre_del_dm

Ahora que ya sabemos cual es nuestro «display manager», sólo tendremos que ejecutar el siguiente comando, sustituyendo nombre_del_dm por lo que proceda:

sudo /etc/init.d/nombre_del_dm restart

Si por algún motivo el argumento «restart» no funcionase, puedes probar a escribir el comando anterior cambiando «restart» por «stop» y ejecutándolo otra vez pero cambiando «restart» por «start». Por ejemplo:

sudo /etc/init.d/kdm stop

sudo /etc/init.d/kdm start

Una vez reiniciado el servidor X debería cambiar automáticamente al terminal 7 y mostrarnos la pantalla de inicio de sesión. Si eso no ocurriese, la combinación Ctrl+Alt+F7 nos llevará al terminal 7 para que podamos continuar trabajando en modo gráfico

Si por cualquier motivo lo anterior no funcionase, entonces recurriremos a la artillería pesada: es hora de que os presente a la tecla que os salvará más de una vez, me refiero a la tecla SysRq

La tecla SysRq (System Request) o también conocida como PetSis (Petición del Sistema) en los teclados hispanos, se usa en una combinación de teclas para realizar llamadas al sistema a bajo nivel, permitiéndonos retomar el control cuando los niveles superiores fallan pero, ¿Donde se encuentra esta tecla? Pues en la mayoría de los teclados sueles ser la misma que ImprPant (Imprimir pantalla) y está situada cerca de la tecla Supr. En este caso, la combinación que nos interesa para volver a ganar el control de la máquina reiniciando el servidor X es la siguiente:

Alt+SysRq+K

Con esa combinación debería reiniciarse el servidor X y dejarnos en la pantalla de inicio de sesión

¿Que hacer si todo lo anterior falla?

Pues lamentablemente nos tocará reiniciar el equipo, aunque SysRq nos ofrece una manera más segura de reiniciar que apagando y volviendo a encender el equipo. Es importante que las siguientes letras en este mismo orden se os queden grabadas en la cabeza: RSEIUB. Una buena manera de acordarse es usando la regla nemotécnica «Rápido Soy En Inventarme Un Baile»

Esas son las letras que tendremos que usar en ese mismo orden en conjunción con SysRq y Alt para reiniciar de manera segura el equipo, así que la combinación a usar sería la siguiente:

Alt+SysRq+R (Esta combinación rehabilita el teclado, así que si antes no podías acceder a los terminales virtuales usando Ctrl+Alt+<Teclas F1 a F6> ahora es un buen momento para reintentarlo, y si funciona, reiniciar el servidor X con los comandos arriba descritos. En caso contrario, sigue con la secuencia de teclas para reiniciar el equipo)

Alt+SysRq+S (Sincroniza los datos de los volúmenes montados, para evitar la pérdida de datos y/o corrupción del sistema de archivos)

Alt+SysRq+E (Da la última oportunidad a los procesos para que terminen por las buenas)

Alt+SysRq+I (Termina por las malas a los procesos que queden todavía vivos)

Alt+SysRq+U (Desmonta todos los volúmenes y los vuelve a montar en modo de sólo lectura)

Alt+SysRq+B (Reinicia el equipo)

No pasará aparentemente nada hasta que completéis la secuencia, es entonces cuando el PC se reiniciará.

Problemas a la hora de usar las combinaciones SysRq

Probablemente si estas leyendo esto desde un portátil, te hayas topado con el siguiente problema: La tecla SysRq está serigrafiada en color azul, lo cual implica que tienes que usar la tecla Fn para activarla, lo cual no sería un problema si no fuese por el hecho de que las teclas U, I, K tienen serigrafiados en azul los números 4, 5 y 2 respectivamente. El caso es que en este escenario si usamos la combinación Alt+Fn+SysRq+K no conseguiríamos reiniciar el servidor X, puesto que en realidad le estaríamos enviando al kernel la combinación Alt+SysRq+2 en vez de Alt+SysRq+K, que es la que reinicia el servidor X.

Ante esto existen dos posibles soluciones, vamos con la primera, que está probada y se que funciona. Se trata de ejecutar las combinaciones de teclas de esta manera:

Alt+Fn+SysRq+Soltar la tecla Fn+Letra

Como ejemplo pondremos el caso de que queremos reiniciar el servidor X, entonces tendríamos que hacer lo siguiente:

Alt+Fn+SysRq

Ahora soltamos la tecla Fn y sin dejar de pulsar las teclas Alt+SysRq pulsamos la letra K

Puede parecer complicado al principio, pero enseguida la coges el truco. Bien, ahora que el primer método está explicado, vamos con el segundo que, aunque no tuve la oportunidad de probarlo en una situación de cuelgue real, debería funcionar perfectamente. La idea es hacer uso de la tecla NumLock, pulsándola antes de empezar con las combinaciones SysRq. Como la tecla NumLock hace que las teclas que tienen el teclado numérico serigrafiado en azul escriban el número que está en azul en vez de la letra en cuestión, al pulsar Fn cancelaríamos momentáneamente este comportamiento y la tecla escribiría la letra en vez del número. Esto se puede comprobar fácilmente:

Con la función NumLock desactivada:

K = K

Fn+K = 2

Con la función NumLock activada:

K = 2

Fn+K = K

Visto como funciona el método, en teoría el pulsar NumLock antes de comenzar con las combinaciones SysRq haría que la tecla Fn ya no fuese un problema y pudiésemos introducir las combinaciones de manera más fácil.

Otro problema común es que al ejecutar las combinaciones de teclas cuando el servidor X no está del todo colgado, puede que nos salgan diálogos de captura de pantalla (porque recordemos que SysRq comparte tecla con ImprPant). Esto normalmente se debe a que las teclas no se pulsan en el orden correcto, por ejemplo:

Fn+SysRq+Alt+K lanzará el diálogo de captura de pantalla y muy probablemente no reiniciará el servidor X. Sin embargo, la combinación Alt+Fn+SysRq+K no nos dará ese problema y reiniciará el servidor X sin que nos salga el diálogo de captura de pantalla. Como apunte final recordar que si usáis un PC de sobremesa, las combinaciones anteriores son las mismas, solo que no se usa la tecla Fn.

Y eso es todo sobre como solucionar cuelgues en Linux, espero que a alguien le sirva de ayuda :)

3 comments

  1. rabo dice:

    Buen articulo, pero no has pensado porque se suele colgar el servidor X.

    Mi experiencia me dice que es por culpa de otros procesos, y tan solo hace falta ir a cualquier otro terminal virtual como tu dices, ejecutar el comando top, buscar el causante (sospechas cual es, o ves que consume demasiados recursos) matarlo, volver al modo grafico y, sorpresa, todo sigue funcionando igual.

  2. Pc dice:

    Yo lo que necesito saber es:
    a que teclas hay que pulsar para la captura de pantalla en un ordenador de mesaaaa?

  3. zapperdj dice:

    Eso depende de si usas Windows o Linux. En Linux simplemente basta con presionar la tecla Impr Pant (o Print Screen, dependiendo del teclado) y ya te sale un dialogo conla opcion para guardar la captura. En Windows tambien hay que pulsar la misma tecla pero luego hay que abrir el Paint y pulsar Ctrl+V para poder ver la captura y guardarla

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *