Відновлення від Sys Rq + r


25

У мене було дуже погане блокування мого X-сервера, і мені довелося зробити Sys Rq + r, щоб звільнити мою клавіатуру від X і потрапити в консоль. Мені вдалося вбити процес, що блокував мою систему, і продовжувати свою роботу на моєму ще запущеному X сервері.

Тепер, коли я, наприклад, натискаю Alt + F4, щоб знищити вікно, моя система переходить на 4-ту консоль, а не вбиває активне вікно. Тож здається, що моя клавіатура все ще знаходиться у звільненому режимі.

Як я скасовую попередню команду Sys Rq + r, щоб я міг продовжувати свою роботу на своєму запущеному сервері X?

Відповіді:


30

Я знайшов рішення саме після того, як задав це питання.

Для переключення назад консолі, на якій працює X (зазвичай tty7), з режиму ASCII в режим RAW виконайте таку команду:

sudo kbd_mode -s -C /dev/tty7

А тепер все працює так, як очікувалося знову. :)

Додаткову інформацію можна отримати у запитанні: Що означає режим "необроблена / відкручена" клавіатура?


Спасибі! Ще намагаюся зрозуміти, чи є спосіб зробити це для всіх ttys відразу, так само, як unRaw робить ...
добре

3
@phyzome Ви не хочете робити цього для всіх ttys, оскільки "нормальний" (текстовий режим) tty очікує режим ASCII (XLATE) або UTF-8 (UNICODE). Інакше ви не можете вводити там (це саме те, що виправляє SysRq-R). Для розваги спробуйте kbd_mode -s -C /proc/self/fd/0тет, побачте його злам, а потім виправте його за допомогою SysRq-R.
ніхто

1
Якщо ви використовуєте TTY, у якому працює X, ви також можете використовувати sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117

0

Якщо ви не раз шукаєте в Інтернеті цю конкретну команду (як я це зробив), ви можете скористатися наступним скриптом оболонки, щоб відновити клавіатуру до TTY, що використовується:

#!/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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.