การกู้คืนจาก 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

และตอนนี้ทุกอย่างทำงานได้ตามที่คาดไว้อีกครั้ง :)

มีข้อมูลเพิ่มเติมในคำถาม: โหมดแป้นพิมพ์ raw / unraw หมายถึงอะไร


ขอบคุณ! ยังคงพยายามที่จะคิดออกว่ามีวิธีที่จะทำเพื่อ ttys ทั้งหมดในครั้งเดียวแบบเดียวกัน unRaw ไม่ ...
รักษา mods ของคุณดี

3
@phyzome คุณไม่ต้องการทำสิ่งนี้สำหรับ tty ทั้งหมดเนื่องจากโหมด "ปกติ" (โหมดข้อความ) tty ต้องการ ASCII (XLATE) หรือโหมด UTF-8 (UNICODE) ไม่เช่นนั้นคุณจะพิมพ์ไม่ได้ (นั่นเป็นเพียงสิ่งที่ SysRq-R แก้ไข) เพื่อความสนุกลองkbd_mode -s -C /proc/self/fd/0ใช้ tty ดูสิมันหยุดแล้วแก้ไขโดย 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.