virsh控制台和tty大小


11

我有一个通过ssh连接到的虚拟化服务器。如果现在更改窗口的大小,它将自动传播到服务器。使用stty -a,检查列和行值最容易看到。

然后virsh console,我用于连接到基于KVM的虚拟机上的串行接口。现在,当我更改窗口的大小时,它不会传播到虚拟服务器。通过选中stty -a,最容易看出这一点,当更改窗口大小时,该值不会在虚拟机上更新。这意味着换行符在终端中无法正常工作,并且任何依赖于窗口大小进行格式化的应用程序(emacs,man等)都将混乱,除非客户端上的窗口大小与服务器上的默认大小匹配。

一种解决方法是使用stty手动设置窗口大小以匹配客户端窗口,但是我想知道是否有任何方法可以使此信息传播并自动在虚拟机中设置窗口大小。

Answers:


7

您通常可以在Shell中解决此问题。

命令:

eval `/usr/bin/resize`

将适当地设置COLUMNS和LINES Shell变量,然后导出它们。因此,在bash中,您可以将以下内容添加到您的.bash_profile(或.profile中,具体取决于您所使用的)

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

或在zsh中:

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

这样就可以在显示每个提示之前立即进行调整大小。其效果不会像ssh或telnet那样,结果会立即处理窗口更改,但是我认为这可能是最好的。


有点hacky,但仍然是一个很好的解决方案。谢谢!
pehrs 2010年

另请参见以下答案以在不执行xterm resize命令的情况下执行此操作:unix.stackexchange.com/a/283206
rsaw 2016年


0

仅添加到标记的答案,因为Serverfault不允许我发表评论。

当目标域是OpenBSD 6.6时,调整大小位于其他位置,并且至少需要设置xbase66。

此外,如果您使用默认的ksh,则足以运行:

eval `/usr/X11R6/bin/resize`

遗憾的是,《红帽》的《 KVM管理指南》中没有此内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.