Sembuh dari Sys Rq + r

25

Saya mengalami penguncian server X yang sangat buruk dan harus melakukan Sys Rq + r untuk melepaskan keyboard dari X dan masuk ke konsol. Saya dapat mematikan proses yang mengunci sistem saya, dan melanjutkan pekerjaan saya di server X saya yang masih berjalan.

Sekarang setiap kali saya misalnya mendorong Alt + F4 untuk membunuh jendela, sistem saya beralih ke konsol ke-4 alih-alih membunuh jendela yang aktif. Jadi sepertinya keyboard saya masih dalam mode rilis.

Bagaimana cara membatalkan perintah Sys Rq + r saya sebelumnya, sehingga saya dapat melanjutkan pekerjaan saya di server X saya yang sedang berjalan?

Bjarke Freund-Hansen
sumber

Jawaban:

30

Saya menemukan solusinya sendiri setelah mengajukan pertanyaan ini.

Untuk beralih kembali konsol di mana X sedang berjalan (biasanya tty7), dari mode ASCII ke mode RAW jalankan perintah berikut:

sudo kbd_mode -s -C /dev/tty7

Dan sekarang semuanya berfungsi seperti yang diharapkan lagi. :)

Informasi lebih lanjut tersedia dalam pertanyaan: Apa artinya mode keyboard mentah / tidak tergambar?

Bjarke Freund-Hansen
sumber
Terima kasih! Masih mencoba mencari tahu apakah ada cara untuk melakukannya untuk semua ty sekaligus, dengan cara yang sama unRaw tidak ...
perlakukan mod Anda dengan baik
3
@ phyzome Anda tidak ingin melakukan ini untuk semua ttys, karena tty "normal" (mode teks) mengharapkan mode ASCII (XLATE) atau UTF-8 (UNICODE). Kalau tidak, Anda tidak dapat mengetik di sana (itulah yang diperbaiki SysRq-R). Untuk bersenang-senang, coba kbd_mode -s -C /proc/self/fd/0pada tty, lihat itu rusak, lalu perbaiki oleh SysRq-R.
tidak ada yang
1
Jika Anda menggunakan TTY yang menjalankan X, Anda juga dapat menggunakan sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117
0

Jika Anda menemukan diri Anda mencari di web untuk perintah khusus ini lebih dari sekali (seperti yang telah saya lakukan), Anda dapat menggunakan skrip shell berikut untuk merebut kembali keyboard ke TTY yang sedang digunakan:

#!/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
sumber