私は SSH 経由で接続する仮想化サーバーを持っています。ウィンドウのサイズを変更すると、自動的にサーバーに反映されます。 を使用してstty -a
列と行の値を確認すると、これが最も簡単にわかります。
次に、 を使用してvirsh console
KVM ベースの仮想マシンのシリアル インターフェイスに接続します。ウィンドウのサイズを変更しても、仮想サーバーに反映されません。これは、 をチェックすることで簡単に確認できます。これはstty -a
、ウィンドウ サイズを変更しても仮想マシン上で更新されません。つまり、改行はターミナルで正しく機能せず、クライアントのウィンドウ サイズがサーバーのデフォルト サイズと一致しない限り、書式設定にウィンドウ サイズに依存するアプリケーション (emacs、man など) は混乱します。
回避策としては、stty を使用してクライアント ウィンドウに合わせてウィンドウ サイズを手動で設定することですが、この情報を伝播させて仮想マシンのウィンドウ サイズを自動的に設定する方法があるかどうか疑問に思っています。
答え1
ほとんどの場合、この問題はシェル内で回避できます。
コマンド:
eval `/usr/bin/resize`
COLUMNS と LINES シェル変数を適切に設定し、エクスポートします。したがって、bash では、.bash_profile (または .profile、どちらを使用するかによって異なります) に次の内容を追加できます。
PROMPT_COMMAND="eval `/usr/bin/resize`"
またはzshの場合:
function precmd {
eval `/usr/bin/resize`
}
各プロンプトが表示される直前にサイズ変更が実行されるようにします。ウィンドウの変更が結果として即座に処理される ssh や telnet のような効果にはなりませんが、おそらくこれが最善の結果だと思います。
答え2
Telnet と SSH には、これらの設定を構成するための帯域外チャネルがあります。シリアル インターフェイスにはありません。参照:https://www.rfc-editor.org/rfc/rfc1073そしてhttps://www.rfc-editor.org/rfc/rfc4254#page-14
答え3
システムで resize コマンドが使用できない場合は、次のようなものを試してください。
stty rows 45
stty columns 140
.bash_profile
しかし、変更を永続化するにはそれを自分のものにし、変更を確認するにはそれをソースにする必要があります
答え4
Serverfault ではコメントが許可されていないため、マークの回答に追加するだけです。
対象ドメインがオープンBSD6.6resize は別の場所にあり、少なくとも xbase66 セットが必要です。
さらに、デフォルトを使用している場合はksh、以下を実行するだけで十分です:
eval `/usr/X11R6/bin/resize`
これが Red Hat の KVM 管理ガイドに記載されていないのは残念です。