virsh คอนโซลและขนาด tty


11

ฉันมีเซิร์ฟเวอร์เวอร์ชวลไลเซชันซึ่งฉันเชื่อมต่อผ่าน ssh ถ้าตอนนี้ฉันเปลี่ยนขนาดของหน้าต่างมันจะเผยแพร่ไปยังเซิร์ฟเวอร์โดยอัตโนมัติ จะเห็นได้ง่ายที่สุดโดยใช้การstty -aตรวจสอบคอลัมน์และค่าแถว

ฉันใช้virsh consoleเพื่อเชื่อมต่อกับอินเตอร์เฟสอนุกรมบนเครื่องเสมือนที่ใช้ KVM เมื่อฉันเปลี่ยนขนาดของหน้าต่างมันไม่ได้แพร่กระจายไปยังเซิร์ฟเวอร์เสมือน สิ่งนี้สามารถมองเห็นได้ง่ายที่สุดโดยการตรวจสอบstty -aซึ่งไม่ได้รับการปรับปรุงบนเครื่องเสมือนเมื่อฉันเปลี่ยนขนาดหน้าต่าง ซึ่งหมายความว่าการแบ่งบรรทัดไม่ทำงานอย่างถูกต้องในเทอร์มินัลและแอปพลิเคชันใด ๆ ที่อาศัยขนาดหน้าต่างสำหรับการจัดรูปแบบ (emacs, man, ฯลฯ ) จะเกิดความสับสนเว้นแต่ว่าขนาดหน้าต่างของไคลเอ็นต์ตรงกับขนาดเริ่มต้นบนเซิร์ฟเวอร์

วิธีแก้ปัญหาคือการกำหนดขนาดหน้าต่างให้ตรงกับหน้าต่างไคลเอ็นต์โดยใช้ stty ด้วยตนเอง แต่ฉันสงสัยว่ามีวิธีใดที่จะรับข้อมูลนี้เพื่อเผยแพร่และกำหนดขนาดหน้าต่างในเครื่องเสมือนโดยอัตโนมัติ

คำตอบ:


7

คุณส่วนใหญ่สามารถแก้ไขปัญหานี้ในเปลือก

คำสั่ง:

eval `/usr/bin/resize`

จะตั้งค่าตัวแปรเชลล์ COLUMNS และ LINES อย่างเหมาะสมแล้วส่งออกตัวแปรเหล่านั้น ดังนั้นใน bash คุณสามารถเพิ่มสิ่งต่อไปนี้ใน. bash_profile ของคุณ (หรือ. profile ขึ้นอยู่กับที่คุณใช้)

PROMPT_COMMAND="eval `/usr/bin/resize`"

หรือเป็น zsh:

function precmd {
    eval `/usr/bin/resize`
}

เพื่อให้การปรับขนาดทำได้ก่อนที่จะมีการแจ้งเตือน เอฟเฟกต์จะไม่เหมือนกับ ssh หรือ telnet ที่การเปลี่ยนแปลงหน้าต่างจะได้รับการจัดการในทันทีอย่างไรก็ตามฉันคิดว่านี่น่าจะดีที่สุดที่คุณจะได้รับ


แฮ็คเล็กน้อย แต่ก็ยังเป็นทางออกที่ดี ขอบคุณ!
pehrs

ดูเพิ่มเติมที่คำตอบนี้โดยไม่ต้องใช้resizeคำสั่งของ xterm : unix.stackexchange.com/a/283206
rsaw

2

Telnet และ SSH มีช่องสัญญาณนอกแบนด์เพื่อกำหนดการตั้งค่าเหล่านี้ อินเตอร์เฟสแบบอนุกรมไม่ ดู: http://tools.ietf.org/html/rfc1073และhttp://tools.ietf.org/html/rfc4254#page-14


2
ฉันคิดออกว่ามีช่องทางควบคุมที่เกี่ยวข้อง แต่คำถามยังคงมีวิธีแก้ปัญหาที่ดีกว่าสำหรับคอนโซลเสมือนของเครื่องเสมือนที่ใช้ KVM หรือไม่? (ผมไม่ทราบกำหนดค่าเครื่อง)
pehrs

0

เพียงเพิ่มคำตอบของการทำเครื่องหมายเพราะ Serverfault ไม่อนุญาตให้ฉันแสดงความคิดเห็น

เมื่อโดเมนเป้าหมายคือOpenBSD 6.6 การปรับขนาดจะอยู่ที่อื่นและต้องการให้ xbase66 ตั้งค่าไว้เป็นอย่างน้อย

นอกจากนี้หากคุณใช้kshเริ่มต้นมันก็เพียงพอที่จะเรียกใช้:

eval `/usr/X11R6/bin/resize`

เป็นความอัปยศที่นี่ไม่ได้อยู่ในคู่มือการดูแลระบบ KVM ของ Red Hat

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.