我有一个通过 ssh 连接的虚拟化服务器。如果我现在更改窗口的大小,它将自动传播到服务器。使用stty -a
,检查列和行值最容易看到。
然后我使用virsh console
连接到基于 KVM 的虚拟机上的串行接口。当我现在更改窗口的大小时,它不会传播到虚拟服务器。这最容易通过检查 看到,stty -a
当我更改窗口大小时,它不会在虚拟机上更新。这意味着换行符在终端中无法正常工作,并且任何依赖窗口大小进行格式化的应用程序(emacs、man 等)都会被弄乱,除非客户端上的窗口大小与服务器上的默认大小匹配。
一种解决方法是使用 stty 手动设置窗口大小以匹配客户端窗口,但我想知道是否有任何方法可以让此信息自动传播并在虚拟机中设置窗口大小。
我从我的 (xterm|gnome-terminal) telnet 到 HP 交换机。退出远程登录。这打破了终端的行为。(如果您没有连接到 telnet 的 HP 开关,则可以在终端中使用cat
此文件)。
现在输入一个很长的命令(不止一行,并且看到第二行没有换行到下一行,而是“留在当前行”。这使得无法编辑先前的命令或使用终端任何超过一行的内容。
看到cat filewithlonglines.txt
或git log -p
只显示超过 80 个字符的行的前 80 个字符。
reset
不起作用。stty -g > stty.works
, 运行 telnet,stty $(stty.works)
恢复更改的stty
设置,但行为仍然被破坏。
我必须关闭终端并开始一个新的终端。:-(
在 telnet 后,除了保存/恢复以修复损坏的终端之外reset
,我还能做什么stty
?
编辑:我发现如果我screen
在以下命令之一中使用like:
screen bash -c "cat hptelnet.escape ; bash"
Run Code Online (Sandbox Code Playgroud)
或者
screen telnet hpswitch
Run Code Online (Sandbox Code Playgroud)
然后我的终端在屏幕退出时仍然正常工作。因此,解决方法是将 screen 放在弄乱我的终端的命令前面,但我仍然想知道如何恢复已经弄乱的终端...