Récupération à partir de Sys Rq + r


25

J'ai eu un très mauvais blocage de mon serveur X et j'ai dû faire un Sys Rq + r pour libérer mon clavier de X et entrer dans une console. J'ai pu tuer le processus qui bloquait mon système et continuer mon travail sur mon serveur X toujours en cours d'exécution.

Maintenant, chaque fois que je pousse par exemple Alt + F4 pour tuer une fenêtre, mon système passe à la 4ème console au lieu de tuer la fenêtre active. Il semble donc que mon clavier soit toujours en mode libéré.

Comment annuler ma précédente commande Sys Rq + r, de manière à pouvoir continuer mon travail sur mon serveur X en cours d'exécution?

Réponses:


30

J'ai trouvé la solution moi-même juste après avoir posé cette question.

Pour revenir à la console dans laquelle X s'exécute (généralement tty7), du mode ASCII au mode RAW, exécutez la commande suivante:

sudo kbd_mode -s -C /dev/tty7

Et maintenant, tout fonctionne à nouveau comme prévu. :)

Plus d'informations disponibles dans la question: Que signifie le mode clavier brut / unraw?


Merci! J'essaie toujours de savoir s'il y a un moyen de le faire pour tous les ttys à la fois, de la même manière que UnRaw le fait ...
traitez bien vos mods du

3
@phyzome Vous ne voulez pas faire cela pour tous les ttys, car le tty "normal" (mode texte) attend le mode ASCII (XLATE) ou UTF-8 (UNICODE). Sinon, vous ne pouvez pas taper là (c'est exactement ce que SysRq-R corrige). Pour le plaisir, essayez kbd_mode -s -C /proc/self/fd/0un tty, voyez-le casser, puis corrigez-le par SysRq-R.
personne

1
Si vous utilisez le TTY sur lequel X s'exécute, vous pouvez également l'utiliser sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117

0

Si vous vous trouvez plusieurs fois sur le Web pour rechercher cette commande (comme je l'ai fait), vous pouvez utiliser le script shell suivant pour recapturer le clavier sur le TTY utilisé:

#!/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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.