Recuperando do Sys Rq + r


25

Eu tive um bloqueio muito ruim do meu servidor X e tive que fazer um Sys Rq + r para liberar meu teclado do X e entrar no console. Consegui matar o processo que estava bloqueando meu sistema e continuar meu trabalho no meu servidor X ainda em execução.

Agora, sempre que eu pressiono Alt + F4 para matar uma janela, meu sistema alterna para o quarto console em vez de matar a janela ativa. Parece que meu teclado ainda está no modo liberado.

Como desfazer o comando Sys Rq + r anterior, para poder continuar meu trabalho no servidor X em execução?

Respostas:


30

Eu mesmo encontrei a solução depois de fazer essa pergunta.

Para voltar ao console em que o X está sendo executado (geralmente tty7), do modo ASCII para o modo RAW, execute o seguinte comando:

sudo kbd_mode -s -C /dev/tty7

E agora tudo funciona como esperado novamente. :)

Mais informações disponíveis na pergunta: O que significa o modo de teclado bruto / não redesenhado?


Obrigado! Ainda tentando descobrir se há uma maneira de fazê-lo para todos os ttys de uma vez, da mesma forma unRaw faz ...
tratar os seus mods bem

3
@phyzome Você não deseja fazer isso para todos os ttys, pois o tty "normal" (modo texto) espera o modo ASCII (XLATE) ou UTF-8 (UNICODE). Caso contrário, você não poderá digitar lá (é exatamente isso que o SysRq-R corrige). Por diversão, experimente kbd_mode -s -C /proc/self/fd/0um tty, veja-o quebrar e, em seguida, corrija-o pelo SysRq-R.
ninguém

11
Se você estiver usando o TTY em que o X está sendo executado, também poderá usá-lo sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117

0

Se você estiver pesquisando na Web por esse comando específico mais de uma vez (como eu fiz), poderá usar o seguinte script de shell para recuperar o teclado para o TTY em 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.