Eu tenho um servidor de virtualização ao qual me conecto por ssh. Se eu alterar agora o tamanho da janela, ela será automaticamente propagada para o servidor. É mais facilmente visto usando stty -a
, verificando os valores das colunas e das linhas.
Em seguida, uso virsh console
para conectar-me à interface serial em uma máquina virtual baseada em KVM. Quando altero o tamanho da janela, ela não se propaga para o servidor virtual. Isso é mais facilmente visto verificando stty -a
, que não é atualizado na máquina virtual quando altero o tamanho da janela. Isso significa que as quebras de linha não funcionam corretamente no terminal e qualquer aplicativo que depende do tamanho da janela para formatação (emacs, man, etc) fica confuso, a menos que o tamanho da janela no cliente corresponda ao tamanho padrão no servidor.
Uma solução alternativa é definir manualmente o tamanho da janela para corresponder à janela do cliente usando stty, mas gostaria de saber se existe alguma maneira de fazer com que essas informações se propaguem e definam o tamanho da janela na máquina virtual automaticamente.
Responder1
Você poderia contornar esse problema principalmente no shell.
O comando:
eval `/usr/bin/resize`
definirá as variáveis de shell COLUMNS e LINES apropriadamente e depois as exportará. Então, no bash, você pode adicionar o seguinte ao seu .bash_profile (ou .profile, dependendo de qual você usa)
PROMPT_COMMAND="eval `/usr/bin/resize`"
Ou em zsh:
function precmd {
eval `/usr/bin/resize`
}
Para que um redimensionamento fosse realizado logo antes de cada prompt ser exibido. O efeito não seria como o do ssh ou do telnet, onde as alterações da janela seriam tratadas imediatamente, no entanto, acho que isso é provavelmente o melhor que você obterá.
Responder2
Telnet e SSH possuem um canal fora de banda para definir essas configurações. A interface serial não. Ver:https://www.rfc-editor.org/rfc/rfc1073ehttps://www.rfc-editor.org/rfc/rfc4254#page-14
Responder3
se o comando de redimensionamento não estiver disponível em seu sistema, você pode tentar algo como:
stty rows 45
stty columns 140
mas você tem que colocá-lo .bash_profile
para persistir a mudança e então obtê-lo para ver a mudança
Responder4
Apenas acrescentando à resposta de Mark, porque o Serverfault não me permite comentar.
Quando o domínio alvo éOpenBSD 6.6, o redimensionamento está localizado em outro lugar e requer pelo menos o conjunto xbase66.
Além disso, se você estiver usando o padrãoksh, basta executar:
eval `/usr/X11R6/bin/resize`
É uma pena que isso não esteja no Guia de administração KVM da Red Hat.