概要
デスクトップ環境がフリーズしてGUIが応答しなくなった際や、Xサーバを介さない純粋なテキスト端末で作業を進めたい場面において、仮想コンソール(Virtual Terminal / TTY)の制御技術は極めて重要です。本記事では、コマンドラインからディスプレイの表示コンソールを瞬時に切り替えるchvtコマンドを中心に、関連ユーティリティを組み合わせた実践的なコンソール管理テクニックを分かりやすく解説します。
セッション状態とカレント仮想コンソールの特定
ttyコマンドを実行すると、現在標準入力に割り当てられている端末デバイスファイル(ノード名)を取得できます。
実行結果に表示されたnot a ttyという文字列は、実行中の環境が物理的な仮想コンソール(tty)や擬似端末(pts)のいずれにも紐付いていない非対話型セッションであることを示しています。

続いて、システムに現在サインインしているユーザーおよび利用中の端末ポートを一覧表示するwhoコマンドを実行します。
ここでは出力結果が空行となっており、現在マシン上で直接稼働しているアクティブなログインセッションが存在しないことが分かります。

アクティブな仮想端末番号を検出するfgconsoleコマンドの配置状況を確認し、未導入の環境であればkbdパッケージを導入するワンライナーを実行します。

fgconsoleは、現在ディスプレイ上へ実際に描画されている仮想コンソールの識別番号を標準出力に返します。
出力された1という値は、1番目の仮想端末であるtty1がフォアグラウンドでアクティブ化されている状態を意味します。

chvtコマンドを用いた仮想コンソール(TTY)の切り替え
仮想コンソールの切り替えを担うchvtコマンドの存在を確認し、システム上に存在しない場合は同様にkbdパッケージを自動取得・セットアップします。/usr/bin/chvtとパスが返却されたことから、必要なバイナリがすでに環境内へ正しく配置されていることが確認できます。

chvtコマンドは、画面に出力するアクティブな仮想コンソール(TTY)を指定した番号へダイレクトに切り替えます。sudo chvt 1を実行することで、root権限を用いて画面のフォーカスを1番仮想コンソール(tty1)へ移行させます。
処理が成功すると余計な標準出力メッセージは現れず、物理ディスプレイの出力先が目的のコンソールへと即座に切り替わります。

画面表示を2番仮想コンソール(tty2)へと移動させるには、sudo chvt 2を実行します。
近年のUbuntuデスクトップ環境では、ログインマネージャやグラフィカルセッション、あるいは独立したTTYが1番や2番に割り当てられるケースが多いため、作業ワークスペースの切り替え手段として重宝します。
プロンプトが静かに戻り何も出力されない挙動は、コンソールの切り替えリクエストが正常にカーネル側で処理された証拠です。

新規仮想コンソールでのバックグラウンドタスク起動(openvt)
openvtコマンドを利用すると、空いている仮想端末や指定したTTYを新たに立ち上げ、バックグラウンドで指定プログラムを実行させることが可能です。sudo openvt -c 3 -- ls -la /var/logを実行し、3番仮想コンソール(tty3)を明示的にターゲットとして/var/logディレクトリの詳細一覧を取得するコマンドを起動します。
エラーが発生しなければコンソール上にはメッセージが返されず、指定のTTYへ直接コマンドの入出力がバインドされた状態でプロセスが走ります。

バックグラウンドの3番コンソールで実行させた処理結果を目視確認するため、sudo chvt 3を実行して表示画面を3番仮想コンソール(tty3)へとスイッチします。
先ほどopenvt経由で指示したジョブの実行画面をリアルタイムに確認する際、この一連のフローを用います。
こちらもメッセージなしでコマンドが終了し、画面切り替えが滞りなく完了したことを示しています。

不要となった仮想コンソールのリソース解放(deallocvt)
役目を終えた仮想コンソールは、deallocvtコマンドを実行してカーネルメモリの確保状態を解放し、システムリソースを安全に回収します。sudo deallocvt 3を実行することで、特権権限のもと3番仮想コンソール(tty3)に割り当てられていた不要な端末メモリをクリーンアップします。
何の出力もなく処理が終了すれば、対象コンソールのメモリ割り当て解除が正常に完了したことを意味します。

ここで現在のフォアグラウンド仮想端末番号を確かめるため、再度fgconsoleを実行してみます。
結果として3が出力されていますが、これはメモリ割り当ての解放が行われた後も、表示ディスプレイ自体は依然として3番仮想コンソール(tty3)の位置にとどまっていることを表しています。

以上、Ubuntu環境においてchvtコマンドを活用した仮想コンソールの切り替え手順およびTTY関連ツールの実践的な運用方法を紹介しました。
GUI環境がクラッシュした際のレスキュー作業や、CUIでの並行作業・トラブルシューティング時にぜひ役立ててください。