Phục hồi từ Sys Rq + r


25

Tôi đã khóa máy chủ X rất tệ và phải thực hiện Sys Rq + r để giải phóng bàn phím của mình khỏi X và vào bảng điều khiển. Tôi đã có thể giết quá trình đang khóa hệ thống của mình và tiếp tục công việc của mình trong máy chủ X vẫn đang chạy.

Bây giờ, bất cứ khi nào tôi ví dụ đẩy Alt + F4 để giết một cửa sổ, hệ thống của tôi sẽ chuyển sang bảng điều khiển thứ 4 thay vì giết cửa sổ đang hoạt động. Vì vậy, có vẻ như bàn phím của tôi vẫn ở chế độ phát hành.

Làm cách nào để hoàn tác lệnh Sys Rq + r trước đây của tôi, để tôi có thể tiếp tục công việc của mình trong máy chủ X đang chạy?

Câu trả lời:


30

Tôi đã tìm thấy giải pháp cho mình ngay sau khi hỏi câu hỏi này.

Để chuyển trở lại bàn điều khiển trong đó X đang chạy (thường là tty7), từ chế độ ASCII sang chế độ RAW thực hiện lệnh sau:

sudo kbd_mode -s -C /dev/tty7

Và bây giờ mọi thứ hoạt động như mong đợi một lần nữa. :)

Thông tin thêm có sẵn trong câu hỏi: Chế độ bàn phím thô / unraw có nghĩa là gì?


Cảm ơn! Vẫn đang cố gắng tìm hiểu xem có cách nào để làm điều đó cho tất cả các ttys cùng một lúc không, giống như cách mà UnRaw thực hiện ...
đối xử tốt với các mod của bạn vào

3
@phyzome Bạn không muốn làm điều này cho tất cả các ttys, vì chế độ "bình thường" (chế độ văn bản) mong đợi ASCII (XLATE) hoặc UTF-8 (UNICODE). Nếu không, bạn không thể gõ vào đó (đó chỉ là những gì SysRq-R sửa). Để giải trí, hãy thử kbd_mode -s -C /proc/self/fd/0một tty, xem nó bị hỏng, sau đó sửa nó bằng SysRq-R.
không ai là

1
Nếu bạn đang sử dụng TTY mà X đang chạy, bạn cũng có thể sử dụng sudo kbd_mode -s -C /dev/tty$(sudo fgconsole).
TSJNachos117

0

Nếu bạn thấy mình đang tìm kiếm trên web cho lệnh cụ thể này nhiều lần (như tôi đã làm), bạn có thể sử dụng tập lệnh shell sau để lấy lại bàn phím cho TTY đang sử dụng:

#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.