Recuperación de Sys Rq + r

25

Tuve un bloqueo realmente malo de mi servidor X y tuve que hacer un Sys Rq + r para liberar mi teclado de X y entrar en una consola. Pude matar el proceso que estaba bloqueando mi sistema y continuar mi trabajo en mi servidor X que aún se está ejecutando.

Ahora, cada vez que presiono Alt + F4 para cerrar una ventana, mi sistema cambia a la cuarta consola en lugar de cerrar la ventana activa. Entonces parece que mi teclado todavía está en modo liberado.

¿Cómo deshago mi comando anterior Sys Rq + r, de modo que pueda continuar mi trabajo en mi servidor X en ejecución?

Bjarke Freund-Hansen
fuente

Respuestas:

30

Encontré la solución yo solo después de hacer esta pregunta.

Para volver a cambiar la consola en la que se ejecuta X (generalmente tty7), del modo ASCII al modo RAW, ejecute el siguiente comando:

sudo kbd_mode -s -C /dev/tty7

Y ahora todo vuelve a funcionar como se esperaba. :)

Más información disponible en la pregunta: ¿Qué significa el modo de teclado sin procesar / desentrañar?

Bjarke Freund-Hansen
fuente
¡Gracias! Todavía trato de averiguar si hay una manera de hacerlo para todos los ttys a la vez, de la misma manera que unRaw lo hace ...
trata bien tus modificaciones el
3
@phyzome No desea hacer esto para todos los ttys, ya que el tty "normal" (modo texto) espera el modo ASCII (XLATE) o UTF-8 (UNICODE). De lo contrario, no puede escribir allí (eso es exactamente lo que corrige SysRq-R). Por diversión, prueba kbd_mode -s -C /proc/self/fd/0un tty, mira cómo se rompe y luego arréglalo con SysRq-R.
nadie
1
Si está utilizando el TTY en el que se está ejecutando X, también puede usarlo sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117
0

Si se encuentra buscando en la web este comando en particular más de una vez (como lo he hecho), puede usar el siguiente script de shell para volver a capturar el teclado en el TTY en uso:

#!/bin/bash

IFS=$'\n\t'
function ttys() {
    # find open files named `/dev/tty?` from commands named `Xorg`
    lsof -Fn -c Xorg -a /dev/tty? | \
      egrep '^n' |                  \
      sed -r 's/^n(.+)$/\1/g' |     \
      sort |                        \
      uniq
}

tty=$(ttys)
count_ttys=$(wc -l <<< $tty )

if [[ $count_ttys -gt 1 ]]; then
  echo 'more than one tty in use, exiting'
  exit 1
fi

echo binding keyboard to $tty
sudo kbd_mode -s -C $tty
runejuhl
fuente