вирш консолі та 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.

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