virsh控制台和tty大小

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

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

解决方法是使用stty手动设置窗口大小以匹配客户端窗口,但是我想知道是否有任何方法可以获取这些信息来自动传播和设置虚拟机中的窗口大小。

你大概可以在shell中解决这个问题。

命令:

 eval `/usr/bin/resize` 

将适当地设置COLUMNS和LINES shellvariables,然后导出它们。 所以在bash中,你可以添加以下到你的.bash_profile(或.profile,取决于你使用的)

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

或者在zsh中:

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

因此,在显示每个提示之前就会执行resize。 效果不会像ssh或telnet那样,窗口的变化会立即被处理,但是我认为这可能是最好的。

Telnet和SSH有一个带外通道来configuration这些设置。 串行接口不。 请参阅: http : //tools.ietf.org/html/rfc1073和http://tools.ietf.org/html/rfc4254#page-14