Linux

virsh 控制台和 tty 大小

  • May 25, 2021

我有一個通過 ssh 連接到的虛擬化伺服器。如果我現在更改視窗的大小,它將自動傳播到伺服器。stty -a使用, 檢查列和行值最容易看到。

然後我virsh console用來連接到基於 KVM 的虛擬機上的串列介面。當我現在更改視窗大小時,它不會傳播到虛擬伺服器。通過檢查最容易看到stty -a這一點,當我更改視窗大小時,它不會在虛擬機上更新。這意味著換行符在終端中無法正常工作,並且任何依賴於視窗大小進行格式化的應用程序(emacs、man 等)都會被搞砸,除非客戶端上的視窗大小與伺服器上的預設大小匹配。

一種解決方法是使用 stty 手動設置視窗大小以匹配客戶端視窗,但我想知道是否有任何方法可以讓此資訊傳播並自動在虛擬機中設置視窗大小。

您可以在 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 那樣會立即處理視窗更改,但是我認為這可能是你能得到的最好的結果。

引用自:https://serverfault.com/questions/214408